Compare commits

..

173 Commits

Author SHA1 Message Date
John Ralls b57b8d0b75 Update Gramps & dependencies for 5.1.6 release. 2023-07-02 14:39:41 -07:00
Nick Hall 9fe57a2eb2 Bump to 5.1.7 2023-06-29 21:44:40 +01:00
Nick Hall ddfc88946a Release Gramps 5.1.6 2023-06-29 21:37:13 +01:00
Nick Hall 52e4790753 Update Changelog and NEWS files 2023-06-29 21:28:47 +01:00
Nick Hall 8a2c94a3dd Update copyright date 2023-06-29 18:42:00 +01:00
SNoiraud e40b727a57 Narrative web: problem with small pictures.
Fixes #012884
2023-06-28 21:50:08 +01:00
SNoiraud 160d5952f2 Implement the "<CTRL>J" for the family view
Fixes #012882
2023-06-28 21:42:08 +01:00
Jon Schewe 482199d29c Avoid application crash on invalid user input
If the user inputs an invalid date this change keeps the application
from crashing when such a date is found. The invalid date
information is reported to the user in the log.

Fixes #12658.
2023-06-28 20:58:37 +01:00
Nick Hall bfa7c0c9f4 Fix export where private citations are excluded 2023-06-28 19:05:25 +01:00
prculley 614332aac8 Fix Event compare tool to display enclosed places properly 2023-05-14 22:50:01 +01:00
SNoiraud 0a981f0ca6 Check that view exists before calling post_create method
Avoids 'NoneType' object has no attribute 'post_create' error.

Fixes #12638
2023-05-14 22:47:55 +01:00
Jingxuan He 9e81014fc6 Fix a wrong operator bug in the web calendar report 2023-05-14 22:27:59 +01:00
Himanshu Gohel 2da93aad1f Revert "Enclose tree report image path and file name in braces"
Fixes #12437 by reverting commit 75921ceaf4 due to
reports of regression where processing of the generated TeX file fails due to
bad path specificiation for image files.

Change was introduced in bug fix for #10495.

Bugs #12437 and #12697 reported the regression and confirmed that reverting the
change fixes the regression.
2023-05-14 22:13:38 +01:00
SNoiraud 97434a0136 Geography View: Fix number of arguments in add_bookmark method
add_bookmark() takes 2 positional arguments but 3 were given

Fixes #12718
2023-05-14 21:54:33 +01:00
GaryGriffin 181e2d8540 Use date-specific place in report substitution variables
Fix place title in graphical reports which have user-defined display formats
to use date-specific alternate name.

This impacts Ancestor Tree, Descendant Tree, and Family Descendant Tree.

Fixes #12763.
2023-05-14 21:38:49 +01:00
John Ralls 36d03137dd Try to import berkeleydb if bsddb3 isn't found.
berkelydb is usable for python >= 3.6 and required for
python >= 3.10. See https://www.jcea.es/programacion/pybsddb.htm.
2023-05-14 21:11:55 +01:00
Vincent Smeets f6ac1999dd HtmlDoc: Create a unique filename for cropped images 2023-05-14 21:00:28 +01:00
D.A.Lordemann a99b48711f Fix corrupted NOTE tag in Gedcom export
Remove Python2 code obsoleted by Python3, which was corrupting GEDCOM export of Gramps Notes text that includes multi-byte utf-8 characters.

Fixes #12709.
2023-05-14 19:03:52 +01:00
SNoiraud d5d86e9139 Fix IndexError that sometimes occurs when changing view
This occurs when restarting Gramps.

Fixes #12636, #12304, #12429, #12623, #12695.
2023-05-14 18:49:17 +01:00
SNoiraud 4ebba02b6b Fix crash when invalid note link
Fixes #012854
2023-05-12 22:11:29 +01:00
SNoiraud e535fcefa5 Tags with color names don't work in pedigree views
Color tags work correctly in all views except in pedigree views.
These views modify colors:
...
 context.set_source_rgba(*(self.bordercolor[:3] + (0.4,)))
... and
 context.set_source_rgb(*self.bgcolor[:3])

As it works everywhere except in these views, I think it is a bug
even if we cannot enter color names in tags

Fixes #012866
2023-05-12 21:57:24 +01:00
SNoiraud 0170e2b1e6 Crash when invalid event date 2023-04-05 18:41:27 +02:00
SNoiraud 54799df049 ListModel: Only the first level is managed
When we use checkboxes in columns.
The path was converted to int. Why ?
But when we have multiple level, the path format is "x:y" for two levels,
"x:y:z" for three levels, etc
2023-04-04 19:38:10 +02:00
Nick Hall b97facb66f Update Gramps CI workflow to run on Ubuntu 20.04
Ubuntu 18.04 became fully unsupported on 1 Dec 2022.
2023-03-07 21:56:08 +00:00
John Ralls aae38a6861 mac: Patch bsddb to use berkeleydb instead of bsddb3 module. 2022-12-27 15:25:07 -08:00
John Ralls e0ee86c36a Mac build: Patch berkeleydb configure to work on Apple Silicon. 2022-12-27 11:45:08 -08:00
John Ralls e3e89e6592 [mac] Update Exiv2 download URL, moved to github. 2022-12-26 13:56:57 -08:00
John Ralls 2cde1f0cdb Repackage Gramps 5.1.5 with Gtk updates fixing use on macOS 13 Ventura. 2022-12-24 14:27:46 -08:00
Nick Hall 2ca3839904 Fix spouse's name and underlined call names in records
Fixes #12391
2022-03-19 17:51:06 +00:00
Nick Hall 66cac5e852 Fix package installation failures in CI 2022-03-16 22:21:22 +00:00
Sam Manzi 99ec8e876b Update INCOMPLETE_TRANSLATIONS
* Remove: he

* Add: zh_HK, zh_TW
2022-02-12 22:44:46 +00:00
Ross Gammon b27480f7a1 Update Debian folder after 5.1.5 release 2022-02-12 21:44:57 +00:00
John Ralls e0e81cf56a Package Gramps 5.1.5 for macOS. 2022-02-05 17:12:38 -08:00
Nick Hall 6df7c46400 Bump to 5.1.6 2022-02-05 23:33:10 +00:00
Nick Hall b98f166a6d Release Gramps 5.1.5 2022-02-05 23:28:04 +00:00
Nick Hall 33e78d47db Update Changelog and NEWS files 2022-02-05 23:23:27 +00:00
Nick Hall c753ca66b0 Remove Travis CI configuration 2022-02-05 22:04:48 +00:00
Nick Hall ff87829b99 Fix badges in README file 2022-02-05 22:01:11 +00:00
Nick Hall a1ec516340 Update copyright date 2022-02-05 19:25:53 +00:00
SNoiraud 60b4866296 Strange behavior for the scrollbar in the bottombar
Fixes #012438
2022-02-04 22:13:05 +00:00
romjerome 3ad5248af0 Fix place object element order in DTD and RNG schemas
Element placeobj content does not follow the DTD and RNG,
expecting (ptitle? , pname+)

Fixes #12500
2022-02-04 21:44:15 +00:00
Nick Hall aa7d9c10c8 Merge pull request #1323 from izikeros/pl 2022-02-01 22:25:43 +00:00
Krystian Safjan 9f458578c0 Fixes suggested after review by @stojex 2022-02-01 22:17:38 +00:00
Krystian Safjan 3418027e50 Update Polish translation
- Consistent usage of "Tag": was "Tag" or "Atrybut", note that
  "Attribute" (atrybut) is something different than tag
- "Magazyn" (repository) renamed to "Repozytorium"
- other fixes and addons
2022-02-01 22:16:17 +00:00
SNoiraud 8eed6b869a Solve InterpolationSyntaxError if "%" in a string
The grampletpane module save data in a config file for all
the gramplets added in the dashboard.
The python configparser module doesn't like if we have a "%"
character in a string.

Fixes #012423
2022-02-01 21:57:37 +00:00
SNoiraud f5202a9ab8 '<' not supported between 2 instances of IndexMark
Fixes #012467
2022-02-01 21:45:32 +00:00
Nick Hall b8e5eacbbe Remove debug sattements in unit tests 2022-02-01 21:36:44 +00:00
Nick Hall 810d2fca24 Fix negative Span when dates are not Gregorian
Fixes #12525
2022-02-01 21:33:53 +00:00
Leonhaeuser 7c0e138ad2 get German translation with manual in sync (Display name editor) 2022-01-29 13:22:40 +01:00
Nick Hall 85535c0f5b Merge pull request #1291 from SNoiraud/B12395 2022-01-28 22:18:50 +00:00
SNoiraud b52d90221f Incorrect grouping if no ma/patronymic surname 2022-01-28 22:05:26 +00:00
SNoiraud bfcbd38610 Group As override is ignored for ma/patronymic surnames
Fixes #12395

discourse:
https://gramps.discourse.group/t/patronymic-and-matronymic-name/1684/5
2022-01-28 22:05:17 +00:00
Nick Hall 2ada529a21 Merge pull request #1290 from SNoiraud/B12374 2022-01-28 21:49:56 +00:00
SNoiraud 8d355ee184 Add comments for the lat-lon field of editplace 2022-01-28 21:41:57 +00:00
SNoiraud d5b28435e0 Place editor, lat and long text are swapped
Fixes #012374
2022-01-28 21:41:57 +00:00
prculley 61189d3930 Fix Statusbar progress being shown before use
Fixes #12373
2022-01-28 21:32:12 +00:00
prculley fec961d992 Fix exception when removing a group name in Sqlite db when group
name is already missing.

Fixes #12367
2022-01-28 21:31:51 +00:00
prculley 8ceccb4a28 Fix error when trying to close name editor during long name group
mapping view rebuild.

Fixes #12328
2022-01-28 21:30:27 +00:00
SNoiraud 6ba9722dee OsmGpsMap-CRITICAL: Map source setup called twice
Fixes #012352
2022-01-28 21:17:30 +00:00
Ross Gammon 4a9f658dd4 Fix probably alive test
The probably alive funtion was fixed just prior to the Gramps 5.1.4
release. It appears the relevant unit test was not updated to match.
The relevant commit:
https://github.com/gramps-project/gramps/commit/a685b96f700dcfc6b953413cb3adc8be61d87438
2022-01-28 19:52:42 +00:00
Nick Hall c9537b355e Use GitHub Actions to run continuous integration checks 2022-01-28 19:46:52 +00:00
John Ralls 49c3fa0f3f Update Exiv2, PYExiv2, and json-glib. 2022-01-28 09:06:08 -08:00
Ross Gammon eb002718b1 Update Debian folder for Gramps 5.1.4 release 2022-01-27 21:45:22 +00:00
pehlm 19c714d57a Minor update of Swedish translation 2022-01-25 17:56:25 +01:00
Tian Shixiong b392ce01e0 Minor update to zh_CN translation 2022-01-24 15:40:16 +00:00
Leonhaeuser b43b6bdd6d small German translation fixes 2021-11-03 19:43:17 +01:00
Leonhaeuser c027276466 Fixed German translation error of "Character set encoding" 2021-11-01 22:16:40 +01:00
Leonhaeuser 898b6b26e8 Fixed German translation error of "Graph generations" 2021-10-25 21:54:26 +02:00
John Ralls ab2df73268 Repackage Gramps.app to work with macOS 12. 2021-10-16 13:51:55 -07:00
John Ralls e1794090e1 [macOS]Add entitlements path to bundle-file so Gramps.app is signed with it. 2021-10-16 13:51:55 -07:00
Leonhaeuser 87860fcfd2 Fixed German translation error of "filter person" 2021-09-19 13:15:21 +02:00
Leonhaeuser 79986e1f5e fixed error in German translation found during manual translation also fixed in master 2021-08-30 18:06:20 +02:00
Leonhaeuser 0f38a1a645 fixed German translation of 'Descendant families of' already done in trunk Weblate 2021-08-11 22:36:58 +02:00
John Ralls 14618917c2 Add python-fontconfig to the macOS build.
Needed to enable using genealogical symbols.
2021-08-10 16:18:41 -07:00
John Ralls ae7a2500de Inlude fontconfig's etc/fonts in macOS app bundle.
Graphviz now uses fontconfig to find its fonts.
Fixes #12370
2021-07-29 15:13:45 -07:00
John Ralls 358a6b118b Bundle release of Gramps 5.1.4. 2021-07-26 13:23:19 -07:00
Nick Hall 9352f0c438 Bump to 5.1.5 2021-07-26 20:53:53 +01:00
Nick Hall 1ab4cbfa63 Release Gramps 5.1.4 2021-07-26 20:49:30 +01:00
Nick Hall 1fd319e13a Update Changelog and NEWS files 2021-07-26 20:45:57 +01:00
Nick Hall 7cb8489ba2 Update copyright date 2021-07-26 15:43:24 +01:00
SNoiraud a685b96f70 probably-alive incorrect if death without date 2021-07-26 15:38:25 +01:00
SNoiraud b24ebd5d77 fix the commit in master without bug report:
commit: 410cffe832
2021-07-22 18:50:17 +01:00
SNoiraud 6dcb1d00d5 Place editor, copy and paste of lat and long text
no longer auto-populating latitude and longitude fields

Fixes #012349
2021-07-22 18:50:17 +01:00
prculley a3b37b9627 Fix for crash when changing views if part of toolbar is not shown
because of a small screen when changing views.

Fixes #12048
2021-07-22 18:49:03 +01:00
prculley 034720321c Fix bottombar always showing after restrt, even when not wanted
Fixes #12338
2021-07-22 18:47:46 +01:00
Tian Shixiong 09f01a69d5 Update and fix Simplified Chinese translation 2021-07-21 18:53:11 +01:00
Leonhaeuser 597f3ebedf fixed smal German translation Error for item also fixed in Weblate GUI for master 2021-07-16 22:27:20 +02:00
Tian Shixiong c7b5e149fa Update Simplified Chinese translation 2021-07-08 23:20:13 +01:00
pehlm f7203aa029 One update Swedish translation 2021-07-05 15:50:44 +02:00
John Ralls 9cca728a66 Better to use locale.get_collation than locale.collation. 2021-07-03 21:54:57 -07:00
John Ralls df270adc94 Wrap call to dbapi.check_collection to prevent a forced API change. 2021-07-03 21:49:01 -07:00
John Ralls c177c13f99 Merge John Ralls's 'bug12343' into maintenance/gramps51. 2021-07-03 06:54:09 -07:00
John Ralls 15f1bb0201 Fix URL for berkeleydb patch. 2021-07-01 15:40:58 -07:00
John Ralls f75aa9302a Always use filtered collation names.
Store the Sqlite3 collations in the __collations array to short-circuit
re-creation.

Fixes https://gramps-project.org/bugs/view.php?id=12343.
2021-07-01 11:45:23 -07:00
prculley 708c83dc58 Revert "An experimental fix for bug12048"
This reverts commit 3c1c21163c.
commited by mistake
2021-06-25 09:59:15 -05:00
prculley 0a809904dc Revert "Change to timeout, rather than idle_add, and dereference toolbars in order they were added"
This reverts commit f91d3e94ab.
commited by mistake.
2021-06-25 09:58:34 -05:00
Leonhaeuser e8f50deabc Fixed different German translations for "What's next" also fixed in master (Weblate) 2021-06-25 11:40:13 +02:00
Leonhaeuser 486fae91ce German relation calculator fixed issue if more then 24 generations between the two person 2021-06-23 10:23:33 +02:00
niememat 9ee5468bda Fix translation in Finnish 2021-06-22 13:22:45 +03:00
Tian Shixiong eac6a935f6 Correct and improve Simplified Chinese translation
Correct some terribly wrong and low quality translation,
even machine translation.

Improve some existing translation for better user experience
as a software, use more written language.
2021-06-17 16:37:09 +08:00
Tian Shixiong cc68b7acfc Improve and correct Simplified Chinese translation 2021-06-10 18:37:26 +01:00
Tian Shixiong c321e7f0d6 Improve and correct the Simplified Chinese translation 2021-05-28 14:04:35 +08:00
Tian Shixiong e13a852523 Update and improve Simplified Chinese translation 2021-05-26 12:51:15 +01:00
Tian Shixiong 3c4c433a84 Update Simplified Chinese translation 2021-05-20 14:01:20 +08:00
Jan Sparreboom e8268cb37e Update Dutch translation 2021-05-15 23:12:19 +01:00
Nick Hall 721d964741 Merge pull request #1137 from tiansworld/workl10n 2021-05-15 15:52:07 +01:00
Tian Shixiong 7d4ec1be73 Correct and Update Simplified Chinese translation 2021-05-15 15:44:39 +01:00
Tian Shixiong 36ce375a2a Update Simplified Chinese translation 2021-05-15 15:44:39 +01:00
Leonhaeuser 9f6afcc7db Corrected some German translation errors found during handbook revision 2021-05-14 21:23:35 +02:00
John Ralls c66fc6423d Add file logging for macOS.
When Gramps is launched from macOS's LaunchServices it doesn't have
a sys.stderr attached so the default stream logger goes to /dev/null.
Use a FileHandler in tht case, writing the log to $TMPDIR/gramps-pid.log.

This will help particularly in analyzing crashes where python shuts down
as there's no crash report in that case.
2021-05-11 15:58:00 -07:00
prculley f91d3e94ab Change to timeout, rather than idle_add, and dereference toolbars in order they were added 2021-05-11 15:58:00 -07:00
prculley 3c1c21163c An experimental fix for bug12048 2021-05-11 15:58:00 -07:00
John Ralls 09709ec0c6 Update PyICU to 2.7.2 in macOS build. 2021-05-06 14:24:17 -07:00
Paul Culley bb7f5fa522 Fix libplaceview to avoid exception when mapservice is no longer present (#1193)
Fixes #12263
2021-05-06 10:19:03 -05:00
Paul Culley 9957506f35 Fix References Gramplet for inadequate updates when other objects change (#1192)
Fixes #12248
2021-05-06 10:18:11 -05:00
Serge Noiraud eb4ce9ff79 geofamily crashes if a family has no father (#1188) 2021-05-06 10:14:49 -05:00
Serge Noiraud 1d72f4b23d Home Person setting does not convey in a Merge (#1187)
* Home Person setting does not convey in a Merge

Fixes #012235

* better pylint score
2021-05-06 10:14:26 -05:00
Paul Culley 5ad5f08a2b Fix CSV export of view to only put single CR character. (#1186)
Fixes #12158
2021-05-06 10:13:02 -05:00
Paul Culley 9e43f060d1 Add Media filter rule 'HasMedia' to list of media rules for editor (#1182)
Fixes #12212
2021-05-06 10:11:16 -05:00
Leonhaeuser bc1ed688c4 corrected German translation of "confidence" 2021-04-28 23:04:23 +02:00
Leonhaeuser 9d358d06f5 German corrected translation of 'attribute' 2021-04-26 18:02:29 +02:00
Leonhaeuser 16b1945a0e Fixed translation error of "display name editor" into German 2021-04-25 12:12:50 +02:00
Leonhaeuser 5e9be68ad5 some translation fixes for German 2021-04-24 22:05:49 +02:00
pehlm cd3ef08ffb Changed immigration too, Swedish 2021-04-24 15:21:33 +02:00
pehlm 773e763093 Correction of Swedish translation 2021-04-24 13:17:11 +02:00
Helder Geovane Gomes de Lima 0badfb6b47 Update Portuguese translation (pt_BR) (#1199)
This pull request is an updated version of the patch I've provided at <https://gramps-project.org/bugs/view.php?id=10547> in 2018, now based on branch 5.1
2021-04-22 15:38:01 +02:00
Leonhaeuser 5af80da5cd Corrected translation of markup in German translation 2021-04-19 23:22:48 +02:00
Leonhaeuser 0045f134c6 Fixed translation of tags in German translation 2021-04-17 00:07:47 +02:00
Leonhaeuser 1035f8930f German translation for type unified 2021-04-14 00:22:56 +02:00
romjerome d4bceeb6ff 11656: typo, spelling correction
contribution by Philippe
2021-04-13 09:14:24 +02:00
romjerome c8fc88cfe7 Need to set locale.textdomain under linux (#1198)
_build_popup_ui() ignores translated strings without locale.textdomain set.
2021-04-13 08:53:04 +02:00
Leonhaeuser b4b6d52306 Fixed German translation of number for places 2021-04-13 00:04:11 +02:00
John Ralls 4f390c6b33 Update dependencies.
Includes moving berkeleydb and pybsddb over from gtk-osx.
2021-04-11 16:18:46 -07:00
Leonhaeuser 0442c34258 Some small fixes in German translation 2021-03-21 00:18:46 +01:00
Leonhaeuser c903f5e5a5 Update German translation for csv import/export 2021-03-11 22:59:42 +01:00
Leonhaeuser 3329860f50 small fix in German translation 2021-03-01 23:21:46 +01:00
Matthias Kemmer e7401f3aaa Change category of 'MatchesEventFilter' (#1130) 2021-02-19 11:45:38 -06:00
Paul Culley 1a48e8a03e Fix issue where separator between top and bottom bar of View creeps up. (#1122)
Fixes #11973
2021-02-19 11:44:32 -06:00
Paul Culley 9a4adab9d6 Fix Locations Gramplet (Enclosed by) to properly displaycertain nested places. (#1127)
when the smallest place has undated enclosure and larger places are dated.

Issue #11691
2021-02-19 11:32:33 -06:00
Paul Culley bb0647274b Fix Family Tree Manager drop error on Windows (#1132)
Fixes #10734
2021-02-19 11:31:43 -06:00
Paul Culley f6bfb46fc0 Fix exportvcalendar error is "is not" with a literal (Python 3.8 issue) (#1135)
Fixes #12000
2021-02-19 11:31:06 -06:00
Serge Noiraud b6fa5da8ee Handle not found when copying source from the (#1175)
Citation tree

Fixes #12170
2021-02-19 11:25:02 -06:00
Paul Culley 14c2d0e1b6 DbLoader: Fix call to 'file' function, which doesn't exist in Python3 (#1173) 2021-02-19 11:23:47 -06:00
Paul Culley 226e8c549a Fix write_lock_file exception when USERNAME is missing (#1171)
Fixes #12150
2021-02-19 11:23:06 -06:00
Paul Culley d173809d8c Fix EditPlace so Tab key doesn't get stuck on Private icon (#1168)
Fixes #12139
2021-02-19 11:22:35 -06:00
Paul Culley 63c52fa1bb Fix Tag report for places that have a hierarchy. (#1162)
Fixes #12124
2021-02-19 11:21:11 -06:00
Paul Culley 455628d44a Fix exception when cancelling out of a db upgrade in GUI (#1154)
Fixes #12063
2021-02-19 11:18:18 -06:00
Leonhaeuser 670bb355cb additional small German translation fixes 2021-02-12 21:36:51 +01:00
Leonhaeuser 202c7a9bf6 Small fixes German translation 2021-02-11 12:06:22 +01:00
Leonhaeuser 72955840f1 fix wrong translation of source text in German translation 2021-02-06 22:06:22 +01:00
Leonhaeuser b8e73d5ee1 fixed small error in German translation 2021-02-06 00:04:33 +01:00
Leonhaeuser 990db39664 small fixes German translation 2021-01-26 18:59:23 +01:00
Nick Hall 9c0dca6bd1 Merge pull request #1053 from cjmayo:themeicon 2020-11-14 19:29:58 +00:00
Chris Mayo 02e0c1c67d Install 128x128 and 256x256 application icons
Created with ImageMagick using e.g.:

convert -background none ../../../gramps.svg -geometry 256x256 gramps.png
2020-11-14 19:23:25 +00:00
Chris Mayo ebf1715468 Install MIME type icons into the hicolor theme
The gnome theme is defunct.

Remove gnome-mime- prefix from icon filenames.
2020-11-14 19:23:24 +00:00
Nick Hall c10f2da00e Install application icons into correct directories 2020-11-14 19:10:34 +00:00
vantu5z 9f71372a97 Update Russian translation 2020-10-15 16:06:19 +03:00
Zdeněk Hataš 0993d9cfc3 Update Czech translation - typo fixes 2020-09-25 09:02:45 +02:00
Tian Shixiong 34471834ab Update Simplified Chinese translation 2020-09-24 22:37:57 +01:00
Jan Sparreboom ff912f844c Update Dutch translation 2020-09-24 21:36:52 +01:00
Lajos Nemeséri 45eac501a9 Revised and updated hu translation 2020-09-24 19:41:31 +01:00
Juan Saavedra d4e85c2397 Update Spanish translation 2020-09-24 17:52:35 +01:00
bokfink c7a4d287f0 Fix error in Birthday and Anniversary report (#1113)
Fixes an error triggered when the first person_handle in the list
has a death event, but no birth event (get_birth_ref() == None)
and does not have family relationships (spouse_handle == None).
These conditions lead to the local variable short_name not being
declared before it comes time to process death events.

Fixes #11766
2020-09-14 11:13:08 -05:00
Paul Culley c0d622c16a Fix graphdoc to properly escape characters in ids for Graphviz (#1111)
Fixes #11741
2020-09-14 11:10:20 -05:00
John Ralls b38f77f2aa Replace inspect.stack() with inspect.currentframe() (#1104)
* Replace inspect.stack() with inspect.currentframe()

Fixes #11874

Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point.

* Fix a few Codecov complaints from files touched by previous commit.

Ignoring the "duplicate code" issue caused by the empty comment line
at the beginning of every file.
2020-09-14 11:08:58 -05:00
RossGammon d91fc9e2fb Update Debian directory after producing the deb file for the 5.1.3 (#1100)
Release.

Co-authored-by: Ross Gammon <rossgammon@debian.org>
2020-09-14 11:05:21 -05:00
Paul Culley 198602be61 Fix crash sorting on columns in Selectors with TreeModels (#1099)
Fixes #11750
2020-09-14 11:04:12 -05:00
Paul Culley 3f9f3215ee Fix progress bar freeze due to changes in Gtk (#1103)
Fixes #11642
2020-09-14 11:02:48 -05:00
Paul Culley beb388a30d Fix svgdrawdoc for text containing XML invalid characters (#1110)
Fixes #11929
2020-09-14 11:00:43 -05:00
John Ralls 29e78d4253 Further changes for bundling with Python 3.8. 2020-08-30 14:46:35 -07:00
John Ralls b80dcaf701 Add libgeocode-glib to bundle so that it actually works. 2020-08-30 14:44:51 -07:00
Leonhaeuser a876d94fbc German tzranslation two smal corrections 2020-08-26 18:08:42 +02:00
John Ralls 95e1e8cb67 [mac] Set __file__ if gramps_launcher.py is run as __main__.
Fixes #11874.
2020-08-25 17:14:10 -07:00
468 changed files with 135345 additions and 137975 deletions
+77
View File
@@ -0,0 +1,77 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2022 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
name: Gramps CI
on:
push:
branches: [ maintenance/gramps51 ]
pull_request:
branches: [ maintenance/gramps51 ]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install gir1.2-pango-1.0
sudo apt-get install gir1.2-gtk-3.0
sudo apt-get install xdg-utils
sudo apt-get install librsvg2-common
sudo apt-get install libglib2.0-dev
sudo apt-get install intltool
sudo apt-get install python3-gi
sudo apt-get install python3-cairo
sudo apt-get install python3-gi-cairo
sudo apt-get install python3-bsddb3
sudo apt-get install python3-dev
sudo apt-get install python3-nose
sudo apt-get install python3-mock
sudo apt-get install python3-icu
sudo apt-get install python3-coverage
sudo apt-get install python3-jsonschema
sudo apt-get install libxml2-utils
sudo apt-get install python3-lxml
sudo apt-get install python-libxml2
sudo apt-get install zlib1g-dev
sudo apt-get install python3-setuptools
- name: Install addons
run: |
mkdir -p ~/.gramps/gramps51/plugins/
wget https://github.com/gramps-project/addons/raw/master/gramps51/download/CliMerge.addon.tgz
tar -C ~/.gramps/gramps51/plugins -xzf CliMerge.addon.tgz
wget https://github.com/gramps-project/addons/raw/master/gramps51/download/ExportRaw.addon.tgz
tar -C ~/.gramps/gramps51/plugins -xzf ExportRaw.addon.tgz
- name: Build
run: |
python3 setup.py build
- name: Run unit test suite
run: |
python3 setup.py test
- name: Trailing whitespace check
run: |
if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
echo "ERROR - Trailing whitespace found in source file(s)";
exit 1;
fi
+3
View File
@@ -7,6 +7,9 @@ build/
dist/
# Gramps
data/tips.xml
data/holidays.xml
po/.intltool-merge-cache
docs/_build/
# Editing
-146
View File
@@ -1,146 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2015-2015 Doug Blank
# Copyright (C) 2016 DaAwesomeP
# Copyright (C) 2016 QuLogic
# Copyright (C) 2016 Tim G L Lyons
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# After changing this file, check it on:
# http://lint.travis-ci.org/
os: linux
dist: xenial
language: python
python:
- 3.5
addons:
apt:
packages:
- gir1.2-pango-1.0
- gir1.2-gtk-3.0
- xdg-utils
- librsvg2-common
- libglib2.0-dev
- intltool
# - python3-gobject Provided by python3-gi
- python3-gi
- python3-cairo
- python3-gi-cairo
- python3-bsddb3
- python3-dev
- python3-nose
- python3-mock
- python3-icu
- python3-coverage
- python3-jsonschema
# lxml dependencies. for merge_ref_test to work
# - libxml2-dev
# - libxslt1-dev
- libxml2-utils
- python3-lxml
- python-libxml2
# ubuntu 14.04 requires this in addition to libxml2-dev and
# libxslt1-dev for compiling lxml.
# https://github.com/deanmalmgren/textract/issues/19
- zlib1g-dev
before_install:
install:
# The working directory is set to /home/travis/build/gramps-project/gramps
# by the automatic git checkout.
# Download Sean Ross-Ross's Pure Python module containing a framework to
# manipulate and analyze python asts and bytecode. This is loaded to
# /home/travis/build/gramps-project/gramps/meta
# FIXME: This should be loaded from the release directory at
# https://pypi.python.org/pypi/meta
- git clone -b master https://github.com/srossross/meta
# Build Gramps package. This seems to copy everything to
# /home/travis/build/scripts-3.3
- python setup.py build
before_script:
# Create the Gramps database directory.
- mkdir -p ~/.gramps/grampsdb/
# set PYTHONPATH so the directly installed module (meta) is picked up from
# /home/travis/build/gramps-project/gramps/meta
- export PYTHONPATH=meta
# set module exclusions. --exclude=TestUser because of older version of mock
# without configure_mock
- export EXCLUDE="--exclude=TestcaseGenerator"
# --exclude=merge_ref_test"
# set GRAMPS_RESOURCES for locale, data,image and documentation
- export GRAMPS_RESOURCES=.
# Install addons
- mkdir -p ~/.gramps/gramps52/plugins/
- wget https://github.com/gramps-project/addons/raw/master/gramps52/download/CliMerge.addon.tgz
- tar -C ~/.gramps/gramps52/plugins -xzf CliMerge.addon.tgz
- wget https://github.com/gramps-project/addons/raw/master/gramps52/download/ExportRaw.addon.tgz
- tar -C ~/.gramps/gramps52/plugins -xzf ExportRaw.addon.tgz
script:
# Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
# from /usr/bin. Use libraries from /usr/lib/python3.4,
# /usr/local/lib/python3.4/dist-packages and /usr/lib/python3/dist-packages
- nosetests3 --nologcapture --with-coverage --cover-package=gramps $EXCLUDE
gramps
# FIXME: This should have run from the current directory, rather than from
# gramps, because there is some test code in that directory.
# give an error for any trailing whitespace
- if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
echo "ERROR - Trailing whitespace found in source file(s)";
exit 1;
fi
after_success:
# apt-get installs python3-coverage, but codecov only invokes coverage, so make
# a link
- sudo ln /usr/bin/python3-coverage /usr/bin/coverage
# We have to use the bash script because the apt-get coverage does not install
# codecov. If we used pip to install codecov, it would run inside the
# virtualenv, and that doesn't work. Change the path to ensure that codecov
# picks up coverage from /usr/bin, rather than from
# /home/travis/virtualenv/python3.3.6/bin/
- PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)
stages:
- test
# Only execute deployment stage on tagged commits, and from our repository
# (e.g. not PRs).
- name: deploy
if: tag IS PRESENT AND repo = gramps-project/gramps
env:
global:
- TWINE_USERNAME=__token__
jobs:
include:
# Deploy source distribution
- stage: deploy
name: Deploy source distribution and wheel
install: skip
script:
- python3 setup.py sdist bdist_wheel
- python3 -m pip install twine
- python3 -m twine upload --repository testpypi --skip-existing dist/*
+114 -342
View File
@@ -1,402 +1,174 @@
2020-08-11 prculley <paulr2787@gmail.com>
2023-06-29 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/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:
Remove duplicates in Translations
* docs/conf.py, gramps/gen/const.py: Update copyright date
2020-08-10 prculley <paulr2787@gmail.com>
2023-05-13 SNoiraud <Serge.Noiraud@free.fr>
* 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: Clean up translations for Default/Home Person
* gramps/plugins/webreport/media.py: Narrative web: problem with
small pictures. Fixes #012884
2020-08-10 Leonhaeuser <mirko@leonhaeuser.de>
2023-05-09 SNoiraud <Serge.Noiraud@free.fr>
* po/de.po: Update German translation
* gramps/plugins/view/familyview.py: Implement the "<CTRL>J" for the
family view Fixes #012882
2020-08-10 Serge Noiraud <Serge.Noiraud@laposte.net>
2022-07-11 Jon Schewe <jpschewe@mtu.net>
* gramps/gui/views/treemodels/eventmodel.py: Events View: "Main
Participants" column does not (#1075) show the full list of participants when expanded. Fixes #11805
* gramps/plugins/webreport/basepage.py: Avoid application crash on
invalid user input If the user inputs an invalid date this change keeps the application
from crashing when such a date is found. The invalid date
information is reported to the user in the log. Fixes #12658.
2020-08-10 Paul Culley <paulr2787@gmail.com>
2023-05-13 Nick Hall <nick-h@gramps-project.org>
* po/pl.po: Fix Charts/Pedigreeview tooltip Polish translation
(#1092) Fixes #11852
* gramps/plugins/export/exportgedcom.py: Fix export where private
citations are excluded
2020-08-10 Krystian Safjan <ksafjan@gmail.com>
2022-06-01 prculley <paulr2787@gmail.com>
* po/gramps.pot, po/pl.po: Fix and add objects to Polish translation
of Gramps (#1088)
* gramps/plugins/tool/eventcmp.py: Fix Event compare tool to display
enclosed places properly
2020-08-06 John Ralls <jralls@ceridwen.us>
2022-06-08 SNoiraud <Serge.Noiraud@free.fr>
* mac/gramps.modules: Use current Gtk release instead of Gtk-3.14.
* gramps/gui/viewmanager.py: Check that view exists before calling
post_create method Avoids 'NoneType' object has no attribute 'post_create' error. Fixes #12638
2020-08-06 John Ralls <jralls@ceridwen.us>
2022-06-15 Jingxuan He <LostBenjamin@users.noreply.github.com>
* mac/gramps.modules: Upgrade pymodules for Python 3.8
compatibility.
* gramps/plugins/webreport/webcal.py: Fix a wrong operator bug in
the web calendar report
2020-07-09 prculley <paulr2787@gmail.com>
2022-10-08 Himanshu Gohel <1551217+hgohel@users.noreply.github.com>
* gramps/plugins/export/exportxml.py: Fix XML export when 'Group-as"
name contains XML invalid chars Fixes #11834
* gramps/gen/plug/docgen/treedoc.py: Revert "Enclose tree report
image path and file name in braces" Fixes #12437 by reverting commit
75921ceaf40f3ced597d99c43794b98f81e49957 due to reports of
regression where processing of the generated TeX file fails due to
bad path specificiation for image files. Change was introduced in bug fix for #10495. Bugs #12437 and #12697 reported the regression and confirmed that
reverting the change fixes the regression.
2020-07-08 SNoiraud <serge.noiraud@laposte.net>
2022-10-22 SNoiraud <Serge.Noiraud@free.fr>
* gramps/plugins/webreport/basepage.py: NarWeb: Province place-type
is not displayed
* gramps/plugins/lib/maps/geography.py: Geography View: Fix number
of arguments in add_bookmark method add_bookmark() takes 2 positional arguments but 3 were given Fixes #12718
2020-07-07 prculley <paulr2787@gmail.com>
2022-12-08 GaryGriffin <genealogy@garygriffin.net>
* gramps/gui/managedwindow.py: Fix ManagedWindow so that new windows
don't appear offscreen when system 'screen' sizes change in part
time multi-monitor setups. Fixes #11831
* gramps/plugins/lib/libsubstkeyword.py: Use date-specific place in
report substitution variables Fix place title in graphical reports which have user-defined display
formats to use date-specific alternate name. This impacts Ancestor Tree, Descendant Tree, and Family Descendant
Tree. Fixes #12763.
2020-07-03 prculley <paulr2787@gmail.com>
2022-12-27 John Ralls <jralls@ceridwen.us>
* gramps/gui/viewmanager.py: Fix menus when db fails to open due to
upgrade/downgrade etc. Fixes #11604
* gramps/grampsapp.py, gramps/gui/aboutdialog.py,
gramps/gui/logger/_errorreportassistant.py,
gramps/plugins/db/bsddb/bsddbtxn.py,
gramps/plugins/db/bsddb/cursor.py, gramps/plugins/db/bsddb/read.py,
gramps/plugins/db/bsddb/summary.py,
gramps/plugins/db/bsddb/test/cursor_test.py,
gramps/plugins/db/bsddb/undoredo.py,
gramps/plugins/db/bsddb/upgrade.py,
gramps/plugins/db/bsddb/write.py, gramps/plugins/gramplet/leak.py,
mac/patches/gramps-berkeleydb.patch: Try to import berkeleydb if
bsddb3 isn't found. berkelydb is usable for python >= 3.6 and required for python >=
3.10. See https://www.jcea.es/programacion/pybsddb.htm.
2020-07-03 prculley <paulr2787@gmail.com>
2023-02-12 Vincent Smeets <Vincent.VSmeets@GMail.com>
* gramps/gui/plug/_windows.py: Fix issue with attach source tool,
results panel Fixes #11780
* gramps/plugins/docgen/htmldoc.py: HtmlDoc: Create a unique
filename for cropped images
2020-07-03 prculley <paulr2787@gmail.com>
2022-10-24 D.A.Lordemann <LordemannD@gmail.com>
* gramps/plugins/export/exportgedcom.py: Fix GEDCOM export; don't
include ADDR when address is missing Fixes #11825
* gramps/plugins/export/exportgedcom.py: Fix corrupted NOTE tag in
Gedcom export Remove Python2 code obsoleted by Python3, which was corrupting
GEDCOM export of Gramps Notes text that includes multi-byte utf-8
characters. Fixes #12709.
2020-07-02 SNoiraud <serge.noiraud@laposte.net>
2022-09-27 SNoiraud <Serge.Noiraud@free.fr>
* gramps/gui/editors/editplace.py,
gramps/gui/editors/editplaceref.py: Coordinates containing a comma
instead of a period Fixes #11823
* gramps/gui/viewmanager.py: Fix IndexError that sometimes occurs
when changing view This occurs when restarting Gramps. Fixes #12636, #12304, #12429, #12623, #12695.
2020-07-23 Leonhaeuser <mirko@leonhaeuser.de>
2023-03-18 SNoiraud <Serge.Noiraud@free.fr>
* po/de.po: German translation fixed typo
* gramps/gen/proxy/referencedbyselection.py,
gramps/gui/widgets/styledtexteditor.py,
gramps/plugins/lib/libhtmlbackend.py: Fix crash when invalid note
link Fixes #012854
2020-07-17 niememat <niememat@gmail.com>
2023-04-17 SNoiraud <Serge.Noiraud@free.fr>
* po/fi.po: Update finnish translation
* gramps/gui/utils.py: Tags with color names don't work in pedigree
views Color tags work correctly in all views except in pedigree views.
These views modify colors: ... context.set_source_rgba(*(self.bordercolor[:3] + (0.4,))) ... and context.set_source_rgb(*self.bgcolor[:3]) As it works everywhere except in these views, I think it is a bug
even if we cannot enter color names in tags Fixes #012866
2020-06-07 Tian Shixiong <tiansworld@fedoraproject.org>
2023-04-05 SNoiraud <Serge.Noiraud@free.fr>
* po/zh_CN.po: Update Simplified Chinese translation for gramps51
branch
* gramps/gui/views/treemodels/eventmodel.py: Crash when invalid
event date
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net>
2023-04-04 SNoiraud <Serge.Noiraud@free.fr>
* gramps/plugins/webreport/basepage.py,
gramps/plugins/webreport/person.py,
gramps/plugins/webreport/surname.py: NarrativeWeb should show
patronymic in individuals (#1048) In the individuals and in surnames pages, we should show the
complete name like defined in the display tab from the narrative web
configuration. Fixes #04404
* gramps/gui/listmodel.py: ListModel: Only the first level is
managed When we use checkboxes in columns. The path was converted to int.
Why ? But when we have multiple level, the path format is "x:y" for
two levels, "x:y:z" for three levels, etc
2020-07-08 Serge Noiraud <Serge.Noiraud@laposte.net>
2023-03-07 Nick Hall <nick-h@gramps-project.org>
* gramps/plugins/webreport/person.py,
gramps/plugins/webreport/place.py: Narrated Website Google Maps
Output JS Warning (#1038) SensorNotRequired: The sensor parameter is no longer required for
the Maps JavaScript API. It won't prevent the Maps JavaScript API
from working correctly, but we recommend that you remove the sensor
parameter from the script element. Fixes #011654
* .github/workflows/gramps-ci.yml: Update Gramps CI workflow to run
on Ubuntu 20.04 Ubuntu 18.04 became fully unsupported on 1 Dec 2022.
2020-01-11 giansalvo <pioggia3+github@gmail.com>
2022-12-27 John Ralls <jralls@ceridwen.us>
* gramps/gen/filters/rules/person/_isdefaultperson.py,
gramps/gen/filters/rules/person/_islessthannthgenerationancestorofd
efaultperson.py, gramps/gui/views/navigationview.py,
gramps/plugins/lib/libpersonview.py,
gramps/plugins/view/fanchartview.py,
gramps/plugins/view/geoclose.py,
gramps/plugins/view/geofamclose.py,
gramps/plugins/view/geomoves.py, gramps/plugins/view/geoperson.py,
gramps/plugins/view/pedigreeview.py,
gramps/plugins/view/relview.py, 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/gramps.pot,
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: Fix bug
0011078: 'Default person' instead of 'Home person' - modified button hints - modified filter rules names and descriptions - modified .pot and .po files - substituted 'home person' with 'Home Person'
* mac/gramps.modules: mac: Patch bsddb to use berkeleydb instead of
bsddb3 module.
2020-07-07 Leonhaeuser <mirko@leonhaeuser.de>
2022-12-27 John Ralls <jralls@ceridwen.us>
* po/de.po: Germen fixed translation error of Media:
* mac/gramps.modules, mac/patches/berkeleydb-4.8-mutex.patch: Mac
build: Patch berkeleydb configure to work on Apple Silicon.
2020-07-04 Leonhaeuser <mirko@leonhaeuser.de>
2022-12-26 John Ralls <jralls@ceridwen.us>
* po/de.po: Fix typo
* mac/gramps.modules: [mac] Update Exiv2 download URL, moved to
github.
2020-07-01 Leonhaeuser <mirko@leonhaeuser.de>
2022-12-24 John Ralls <jralls@ceridwen.us>
* po/de.po: update German translation
* mac/Info.plist, mac/gramps.bundle, mac/gramps.modules: Repackage
Gramps 5.1.5 with Gtk updates fixing use on macOS 13 Ventura.
2020-02-16 Nick Hall <nick-h@gramps-project.org>
2022-03-08 Nick Hall <nick-h@gramps-project.org>
* gramps/gui/editors/editeventref.py: Use event attribute types in
the event reference editor In the event reference editor, custom event attribute types should
be used rather than the default person attribute types. Fixes #11576.
* gramps/plugins/lib/librecords.py: Fix spouse's name and underlined
call names in records Fixes #12391
2020-04-23 SNoiraud <serge.noiraud@laposte.net>
2022-03-16 Nick Hall <nick-h@gramps-project.org>
* gramps/gui/configure.py, 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: Fix typo in gui/configure.py
and translation files Fixes #11665
* .github/workflows/gramps-ci.yml: Fix package installation failures
in CI
2020-05-07 prculley <paulr2787@gmail.com>
2019-12-09 Sam Manzi <manzi.sam@gmail.com>
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad
change in GObject introspection Fixes: #11708
* gramps/gen/utils/grampslocale.py: Update INCOMPLETE_TRANSLATIONS * Remove: he * Add: zh_HK, zh_TW
2020-06-22 pehlm <par.ekholm@pekholm.org>
2022-02-12 Ross Gammon <rossgammon@debian.org>
* po/sv.po: A little adjustment to Swedish translation
* debian/changelog, debian/copyright,
debian/patches/fix-probably_alive_test.patch, debian/patches/series:
Update Debian folder after 5.1.5 release
2020-06-21 pehlm <par.ekholm@pekholm.org>
2022-02-05 John Ralls <jralls@ceridwen.us>
* po/sv.po: Updates to Swedish translation
* mac/Info.plist, mac/gramps.modules: Package Gramps 5.1.5 for
macOS.
2020-06-20 Nick Hall <nick-h@gramps-project.org>
2022-02-05 Nick Hall <nick-h@gramps-project.org>
* gramps/gen/utils/grampslocale.py: Remove Japanese from the
incomplete translations Japanese now has a coverage of 83.2% which is above the 70%
threshold.
2020-06-20 Megumi Sakata <megumi.sakata.k@gmail.com>
* po/ja.po: Update Japanese translation
2020-06-07 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/person.py,
gramps/plugins/webreport/place.py: Navweb: incorrect link type for
osm css files (#1071) Fixes #011787
2020-06-07 prculley <paulr2787@gmail.com>
* data/tests/imp_sample.gramps: Fix import test for change cause by
commit a2c66417 which was Fix GEDCOM import for bad source title
when sources precede references.
2020-06-07 prculley <paulr2787@gmail.com>
* : commit e614a79cef213f57552ceb566eb2d294c9435231 Author: vantu5z
<vantu5z@mail.ru> Date: Tue Apr 28 15:23:25 2020 +0300
2020-03-16 prculley <paulr2787@gmail.com>
* gramps/gen/plug/menu/_enumeratedlist.py: Fix some reports for CLI
where warning message about Value not found Fixes #11621
2020-03-16 prculley <paulr2787@gmail.com>
* gramps/cli/plug/__init__.py: Fix Genealogy Tree reports for crash
in CLI Fixes #11621
2020-04-10 prculley <paulr2787@gmail.com>
* gramps/gui/views/treemodels/treebasemodel.py: Add uistate to tree
views filter initialization Fixes #11657
2020-04-04 prculley <paulr2787@gmail.com>
* gramps/plugins/lib/libgedcom.py: Fix GEDCOM import for bad source
title when sources precede references. Fixes #11610
2020-03-31 prculley <paulr2787@gmail.com>
* gramps/plugins/tool/removeunused.py: Fix RemoveUnused tool for
crash caused by Gtk introspection bug Fixes #11634
2020-03-30 prculley <paulr2787@gmail.com>
* gramps/gen/plug/_manager.py, gramps/gen/plug/_pluginreg.py,
gramps/gui/pluginmanager.py,
gramps/plugins/lib/maps/messagelayer.py: Fix some Python syntax
errors that appear in v3.8.x Fixes #11641
2020-03-26 SNoiraud <serge.noiraud@laposte.net>
* gramps/gui/editors/displaytabs/eventrefmodel.py,
gramps/plugins/gramplet/events.py: Age: test if the death is the
same day as birth
2020-03-25 SNoiraud <serge.noiraud@laposte.net>
* gramps/gui/editors/displaytabs/eventrefmodel.py,
gramps/plugins/gramplet/events.py: Suppress age = 0 days in events
list If the reference event date is equal to the event date, don't show
the age except if the date is estimated, calculated, ... Fixes #0007745
2020-03-23 prculley <paulr2787@gmail.com>
* gramps/gui/viewmanager.py: Fix Dashboard Gramplets to update
during db close when not shown Fixes #11632
2020-03-14 prculley <paulr2787@gmail.com>
* gramps/grampsapp.py: Fix Windows GUI mode startup for crash with
some languages Fixes: #11612. #11490, #11518, #9179, #9201, #9266
2020-03-07 prculley <paulr2787@gmail.com>
* gramps/gen/db/generic.py, gramps/plugins/db/dbapi/dbapi.py: Fix
dbapi to support "Abandon Changes & Quit" feature Fixes #11599
2020-02-08 prculley <paulr2787@gmail.com>
* gramps/gen/lib/grampstype.py: Fix GrampsType for comparison bug
with empty string as one value Fixes #11563
2020-05-07 prculley <paulr2787@gmail.com>
* gramps/plugins/tool/verify.py: Fix Verify tool bug caused by bad
change in GObject introspection Fixes: #11708
2020-04-24 niememat <niememat@gmail.com>
* po/fi.po: Fix translation in Finnish
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-04-18 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-01-20 prculley <paulr2787@gmail.com>
* gramps/gen/datehandler/__init__.py: Fix Date Display so that it
uses LC_TIME if defined Fixes #11230
2020-01-12 prculley <paulr2787@gmail.com>
* gramps/gen/lib/styledtext.py,
gramps/gen/lib/test/styledtext_test.py: Fix StyledText so serialize
will match for style list order changes Fixes #11529
2020-01-08 prculley <paulr2787@gmail.com>
* gramps/gui/managedwindow.py: Try to fix exceptions on
ManagedWindow close Issues #10252, #10642, #10821, #11163, #11440, #11476, #11482,
#11508
2020-04-08 John Ralls <jralls@ceridwen.us>
* : Merge John Ralls's 'bug11639' into maintenance/gramps51
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/tool/verify.py: Same date of birth and death gives
an error. (#1011) Fixes #011553
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/lib/maps/osmgps.py: Geography: add a popup for a
bad tiles path (#1025)
2020-04-04 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/narrativeweb.py: Narweb: image size limit
doesn't match tooltip (#1004) Fixes #011536
2020-04-01 John Ralls <jralls@ceridwen.us>
* gramps/plugins/db/dbapi/sqlite.py: Protect SQLite3 locale from
old-style Unicode locale characters. PySQLite3 requires that collation names have only ascii
alphanumerics and _. ICU locales use old-style Unicode specifiers
and passing them to create_locale will raise an exception. Translate
those characters into underscores. Fixes #11639
2020-03-26 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-03-25 Translator5 <Translator5@users.noreply.github.com>
* po/ru.po: [Language: Russian] Maintenance/gramps51 (#1027) * some Russian translations updates Новый перевод для неких случаев, но
улучшающие понимание и выглядит
более уместно. Также применены
русские переводы слов, которые
использовали до того англицизмы
2020-03-03 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-29 Joan Creus <joan.creusandreu@gmail.com>
* po/ca.po: Updating Catalan translation
2020-02-25 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: V&O changed to PZV to avoid ampersand
2020-02-07 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Minor update to Swedish translation
2020-01-07 prculley <paulr2787@gmail.com>
* data/tests/exp_sample_ged.ged,
gramps/plugins/export/exportgedcom.py: Fix GEDCOM export of
estimated/calculated dates with modifers Fixes #11513
2020-01-11 Ross Gammon <rossgammon@mail.dk>
* debian/changelog: New debian release - update changelog
2020-01-31 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2020-01-26 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: Slovenian translation update
2020-01-23 prculley <paulr2787@gmail.com>
* po/ru.po: Fix typo in Russian translation
2020-01-21 système <romjerome@users.noreply.github.com>
* po/fr.po: typos in french translation #11534 #10534
2020-01-21 Fedik <getthesite@gmail.com>
* po/uk.po: Ukrainian translation update
2020-01-11 John Ralls <jralls@ceridwen.us>
* mac/Info.plist, mac/gramps.modules: Mac release of 5.1.2.
2020-01-10 prculley <paulr2787@gmail.com>
* gramps/gen/const.py, gramps/gui/grampsgui.py, gramps/version.py:
Bump to v5.1.3
* Bump to 5.1.6
+1 -4
View File
@@ -32,9 +32,6 @@ We do not check all dependencies of Gramps, see README for a list of
all required and optional dependencies. Missing dependencies will
result in runtime errors.
To install all needed dependences you can use (in Ubuntu):
sudo apt-get build-dep gramps
To build and install, whether from a tarball or git repo:
python3 setup.py build
sudo python3 setup.py install
@@ -51,7 +48,7 @@ things like MIME type and desktop entries.
See below for ways to invoke Gramps.
Typical install directories in linux (Ubuntu) are:
Typical install directories in linux (ubuntu) are:
* /usr/local/lib/python3.4/dist-packages/gramps/ : the gramps python module
* /usr/local/share/mime-info : mime info so gramps opens files automatically
* /usr/local/share/icons/gnome : our icons
+3
View File
@@ -22,6 +22,9 @@ recursive-include test *
recursive-include windows *
# Remove files created in the build
exclude data/tips.xml
exclude data/holidays.xml
exclude po/.intltool-merge-cache
global-exclude *.pyc
global-exclude *.pyo
+153 -1
View File
@@ -1,3 +1,155 @@
2023-06-29
Version 5.1.6
* Update copyright date.
* Narrative web: problem with small pictures. Fixes #12884.
* Implement the "<CTRL>J" for the family view. Fixes #12882.
* Avoid application crash on invalid user input. If the user inputs an invalid
date this change keeps the application from crashing. The invalid date
information is reported to the user in the log. Fixes #12658.
* Fix export where private citations are excluded.
* Fix Event Compare tool to display enclosed places properly.
* Check that view exists before calling post_create method. Avoids 'NoneType'
object has no attribute 'post_create' error. Fixes #12638.
* Fix a wrong operator bug in the web calendar report.
* Revert "Enclose tree report image path and file name in braces" due to reports
of regression where processing of the generated TeX file fails due to bad path
specificiation for image files. Fixes #12437 and #12697.
* Geography View: Fix number of arguments in add_bookmark method. Fixes #12718.
* Use date-specific place in report substitution variables. Fix place title in
graphical reports which have user-defined display formats to use date-specific
alternate name. This impacts the Ancestor Tree, Descendant Tree, and Family
Descendant Tree reports. Fixes #12763.
* Try to import berkeleydb if bsddb3 isn't found. berkelydb is usable for
python >= 3.6 and required for python >= 3.10.
See https://www.jcea.es/programacion/pybsddb.htm.
* HtmlDoc: Create a unique filename for cropped images.
* Fix corrupted NOTE tag in Gedcom export. Remove Python2 code obsoleted by
Python3, which was corrupting Gedcom export of Gramps Notes text that includes
multi-byte utf-8 characters. Fixes #12709.
* Fix IndexError that sometimes occurs when changing view This occurs when
restarting Gramps. Fixes #12636, #12304, #12429, #12623, #12695.
* Fix crash when invalid note link. Fixes #12854.
* Fix tags with color names in pedigree views. Fixes #12866.
* Crash when invalid event date.
* ListModel: Fix multiple level paths when we use checkboxes in columns.
The path was previously converted to int.
* Update Gramps CI workflow to run on Ubuntu 20.04. Ubuntu 18.04 became fully
unsupported on 1 Dec 2022.
* Fix package installation failures in CI.
* Fix spouse's name and underlined call names in records. Fixes #12391.
* Update INCOMPLETE_TRANSLATIONS list. Remove: he, Add: zh_HK, zh_TW.
* Update Debian folder after 5.1.5 release.
* Mac:
* Patch bsddb to use berkeleydb instead of bsddb3 module.
* Patch berkeleydb configure to work on Apple Silicon.
* Update Exiv2 download URL, moved to github.
* Repackage Gramps 5.1.5 with Gtk updates fixing use on macOS 13 Ventura.
2022-02-05
Version 5.1.5
* Update translations: de, pl, sv, zh_CN.
* Remove Travis CI configuration.
* Fix badges in README file.
* Update copyright date.
* Strange behavior for the scrollbar in the bottombar. Fixes #12438.
* Fix place object element order in DTD and RNG schemas. Element placeobj
content does not follow the DTD and RNG, expecting (ptitle? , pname+).
Fixes #12500.
* Solve InterpolationSyntaxError if "%" in a string. The grampletpane module
saves data in a config file for all the gramplets added in the dashboard. The
python configparser module doesn't like if we have a "%" character in a string.
Fixes #12423.
* '<' not supported between 2 instances of IndexMark. Fixes #12467.
* Remove debug statements in unit tests.
* Fix negative Span when dates are not Gregorian. Fixes #12525.
* Incorrect grouping if no ma/patronymic surname.
* Group As override is ignored for ma/patronymic surnames. Fixes #12395.
See: https://gramps.discourse.group/t/patronymic-and-matronymic-name/1684/5
* Add comments for the lat-lon field of editplace.
* Place editor, lat and long text are swapped. Fixes #12374.
* Fix Statusbar progress being shown before use. Fixes #12373.
* Fix exception when removing a group name in Sqlite db when group name is
already missing. Fixes #12367.
* Fix error when trying to close name editor during long name group mapping
view rebuild. Fixes #12328.
* OsmGpsMap-CRITICAL: Map source setup called twice Fixes #12352.
* Fix probably alive function unit test.
* Use GitHub Actions to run continuous integration checks.
* Mac:
* Update Exiv2, PYExiv2, and json-glib.
* Repackage Gramps.app to work with macOS 12.
* Add entitlements path to bundle-file so Gramps.app is signed with it.
* Add python-fontconfig to the macOS build. Needed to enable using
genealogical symbols.
* Inlude fontconfig's etc/fonts in macOS app bundle. Graphviz now uses
fontconfig to find its fonts. Fixes #12370.
2021-07-26
Version 5.1.4
* Update translations: cs, de, es, fi, fr, hu, nl, pt_BR, ru, sv, zh_CN.
* Update copyright date.
* Fix probably alive if death without date.
* Place editor, copy and paste of lat and long text no longer
auto-populating latitude and longitude fields.
* Fix for crash when changing views if part of toolbar is not shown because
of a small screen when changing views.
* Fix bottombar always showing after restart, even when not wanted.
* Always use filtered collation names. Store the Sqlite3 collations in the
__collations array to short-circuit re-creation.
* Fix issue with German relation calculator fixed issue when more than 24
generations between the two people.
* Add file logging for macOS. When Gramps is launched from macOS's
LaunchServices it doesn't have a sys.stderr attached so the default stream
logger goes to /dev/null. Use a FileHandler in tht case, writing the log
to $TMPDIR/gramps-pid.log. This will help particularly in analyzing
crashes where python shuts down as there's no crash report in that case.
* Fix libplaceview to avoid exception when mapservice is no longer present.
* Fix References Gramplet for inadequate updates when other objects change.
* Fix geofamily crash if a family has no father.
* Home Person setting does not convey in a merge.
* Fix CSV export of view to only put single CR character.
* Add Media filter rule 'HasMedia' to list of media rules for editor.
* Need to set locale.textdomain under linux. _build_popup_ui() ignores
translated strings without locale.textdomain set.
* Change category of 'MatchesEventFilter'.
* Fix issue where separator between top and bottom bar of View creeps up.
* Fix Locations Gramplet (Enclosed by) to properly display certain nested
places when the smallest place has undated enclosure and larger places are
dated.
* Fix Family Tree Manager drop error on Windows.
* Fix exportvcalendar error is "is not" with a literal (Python 3.8 issue)
* Handle not found when copying source from the citation tree.
* Fix call to 'file' function, which doesn't exist in Python3.
* Fix write_lock_file exception when USERNAME is missing.
* Fix EditPlace so Tab key doesn't get stuck on Private icon.
* Fix Tag report for places that have a hierarchy.
* Fix exception when cancelling out of a db upgrade in GUI.
* Icon file changes:
* Install 128x128 and 256x256 application icons.
* Install MIME type icons into the hicolor theme.
* Remove gnome-mime- prefix from icon filenames.
* Install application icons into correct directories.
* Fix error in Birthday and Anniversary report. Fixes an error triggered
when the first person_handle in the list has a death event, but no birth
event and does not have family relationships. These conditions lead to
the local variable short_name not being declared before it comes time to
process death events.
* Fix graphdoc to properly escape characters in ids for Graphviz.
* Replace inspect.stack() with inspect.currentframe().
Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point.
* Fix crash sorting on columns in Selectors with TreeModels.
* Fix progress bar freeze due to changes in Gtk.
* Fix svgdrawdoc for text containing XML invalid characters.
* Mac:
* Update PyICU to 2.7.2 in macOS build.
* Update dependencies. Includes moving berkeleydb and pybsddb over from
gtk-osx.
* Further changes for bundling with Python 3.8.
* Set __file__ if gramps_launcher.py is run as __main__.
* Add geocode-glib to build.
2020-08-11
Version 5.1.3
* Update ca, de, fi, fr, ja, pl, ru, sl, sv, uk, zh_CN translation
@@ -94,7 +246,7 @@ Version 5.1.2
* [Tree doc Tex] fix typo on custom size
* Fix duplicated "døde døde" Norwegion Translation for libnarrate
* Fix up Event Editors Place display for bidi text with Gramps ID
* Fix issues with RTL languages and LAT/LONG
* Fix issues with RTL languages and LAT/LONG
* Fix display of GPS coordinates in Places view for RTL languages
* Fix place editor lat/long entry for RTL languages
* Fix GEDCOM export to avoid translated GrampsType strings
+8 -5
View File
@@ -1,5 +1,8 @@
The Gramps Project ( https://gramps-project.org ) [![Build Status](https://travis-ci.org/gramps-project/gramps.svg?branch=master)](https://travis-ci.org/gramps-project/gramps)[![codecov.io](https://codecov.io/github/gramps-project/gramps/coverage.svg?branch=master)](https://codecov.io/github/gramps-project/gramps?branch=master)
The Gramps Project ( https://gramps-project.org )
===================
[![GitHub CI](https://github.com/gramps-project/gramps/actions/workflows/gramps-ci.yml/badge.svg?event=push&branch=maintenance/gramps51)](https://github.com/gramps-project/gramps/actions/workflows/gramps-ci.yml?query=branch%3Amaintenance%2Fgramps51)
[![codecov.io](https://codecov.io/github/gramps-project/gramps/coverage.svg?branch=maintenance/gramps51)](https://app.codecov.io/gh/gramps-project/gramps/branch/maintenance%2Fgramps51)
We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.
Please read the **COPYING** file first.
@@ -8,13 +11,13 @@ Please read the **INSTALL** file if you intend to build from source.
Requirements
============
The following three packages **MUST** be installed in order for Gramps to work:
The following packages **MUST** be installed in order for Gramps to work:
* **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 packages with GObject Introspection bindings (the gi packages)
The following three packages with GObject Introspection bindings (the gi packages)
* **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
@@ -63,7 +66,7 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
sorting is done through built-in libraries. PyICU is
fairly widely available through the package managers of
distributions. See http://pyicu.osafoundation.org/
(These are Python bindings for the ICU package.
(These are Python bindings for the ICU package.
https://pypi.python.org/pypi/PyICU/)
* **Ghostscript**
@@ -72,7 +75,7 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
The following packages are optional:
------------------------------------
* **gtkspell**
* **gtkspell**
Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

+36 -167
View File
@@ -1,14 +1,14 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Basic-Ash Stylesheet
Style Author: Jason M. Simanek (2008)
Note: Adapted from GRAMPS original Modern Style stylesheet
*******************************************************************************
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
@@ -16,7 +16,7 @@ developed and governed by genealogists.
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>
@@ -36,10 +36,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
black #000
gray dark #555
@@ -47,14 +47,14 @@ gray #999
gray light #CCC
gray very light #EEE
white #FFF
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
General Elements
----------------------------------------------------- */
@@ -96,16 +96,6 @@ body > div {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -235,7 +225,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -261,6 +251,11 @@ div#nav::after {
.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 */
@@ -282,14 +277,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 35px;
border: 0px;
color: #555;
background-color: #EEE;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -300,6 +292,7 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #EEE;
@@ -396,41 +389,18 @@ table#SortByCount thead th.ColumnQuantity a:after {
table.surname td.ColumnName {
background-color: #EEE;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #DDE;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #DDE;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #DDE;
}
/* Individuals
----------------------------------------------------- */
table.IndividualList td.ColumnSurname {
background-color: #EEE;
}
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #DDE;
}
/* Places
----------------------------------------------------- */
#Places table.infolist td.ColumnName {
background-color: #EEE;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #DDE;
}
/* Events
----------------------------------------------------- */
@@ -446,10 +416,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #DDE;
}
#EventList td.ColumnPerson span.person:after,
#EventList td.ColumnPerson span.father:after,
#EventList td.ColumnPerson span.mother:after,
@@ -470,33 +436,10 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
table.eventlist tbody tr td:first-child,
table.eventlist thead tr th:first-child {
padding-left: 10px;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
table.eventlist tbody tr td.ColumnDate {
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
/* Gallery
----------------------------------------------------- */
@@ -548,10 +491,6 @@ table.eventlist td.ColumnPlace {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #DDE;
}
/* Contact
----------------------------------------------------- */
@@ -621,32 +560,18 @@ div#SourceDetail {
/* Subsection : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color: #DDE;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
div#families table.fixed_subtables table.eventlist th:first-child {
width: 9em;
}
div#families table.fixed_subtables table.eventlist th.ColumnDate {
width: 12%;
}
div#families table.fixed_subtables table.eventlist th.ColumnSources {
div#families table.fixed_subtables table.eventlist th:last-child {
width: 5em;
}
div#families table.attrlist td.ColumnType {
color: black;
}
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
width: 60%;
}
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
width: 20%;
}
/* Subsection : Gallery
----------------------------------------------------- */
@@ -686,6 +611,7 @@ div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -733,15 +659,11 @@ div.snapshot div.thumbnail {
h4 + div.grampsstylednote, a.familymap {
margin: 1em 15px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
margin-bottom: 0.5em;
}
/* Subsection : Family Map
@@ -749,15 +671,6 @@ div.grampsstylednote p {
a.familymap {
display: block;
}
a.family_map {
margin-left: 15px;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
}
/* Subsection : Source References
----------------------------------------------------- */
@@ -819,16 +732,10 @@ a.family_map {
padding-right: 15px;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
----------------------------------------------------- */
body#FamilyMap {
background-color: #EEE !important;
background-color: #EEE ! important;
}
/* Calendar Styles
@@ -847,12 +754,16 @@ table.calendar {
background-color: white;
border-bottom-style: none;
padding-top: 1em;
vertical-align: top;
height: 2em;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 15px 0px 0px;
font-weight: bold;
color: #999;
}
.calendar tfoot tr td {
border-top: solid 4px #999;
vertical-align: middle;
@@ -861,6 +772,7 @@ table.calendar {
/* Calendar : Date Numeral */
.calendar div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -869,7 +781,7 @@ table.calendar {
/* Calendar : Date Container */
.calendar td {
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
border-width: 1px 0px 0px 1px;
border-style: solid;
border-color: #CCC;
@@ -877,7 +789,7 @@ table.calendar {
}
.calendar td:first-child {
border-left-style: none;
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
}
.calendar tbody tr:first-child td {
border-top-style: none;
@@ -921,6 +833,8 @@ body#fullyearlinked div.content {
overflow: hidden;
}
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
height: 18em;
border: solid 1px black;
}
@@ -937,48 +851,3 @@ body#fullyearlinked table.calendar tbody td {
body#OneDay div.content {
overflow: hidden;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #555;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 6px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+67 -169
View File
@@ -11,7 +11,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.
@@ -119,16 +119,6 @@ img {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -139,6 +129,7 @@ h1 {
h2 {
font: bold 1em sans-serif;
text-align: center;
float: center;
}
h3 {
font: bold italic 1.6em serif;
@@ -348,7 +339,7 @@ div#footer p#copyright img {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -358,12 +349,6 @@ div#header::after {
display: table;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Alphabet Navigation
----------------------------------------------------- */
div#alphanav {
@@ -416,6 +401,11 @@ div#nav::after {
.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 */
@@ -437,23 +427,22 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 60px;
border: 0px;
color: #FFF;
background-color: #00029D;
}
.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;
@@ -514,12 +503,13 @@ table.infolist tr td.ColumnRowLabel a {
}
table.infolist tr td.ColumnType {
width: 6%;
padding-left: 20px;
}
table.infolist tr td.ColumnAttribute {
width: 10%;
}
table.infolist tr td.ColumnValue {
width: 30%;
width: 40%;
}
table.infolist tr td.ColumnName {
width: 30%;
@@ -534,7 +524,7 @@ table.infolist tr td.ColumnPartner {
table.infolist tr td.ColumnParents {
width: 30%;
}
table.infolist tbody tr td.ColumnParents span.father,
table.infolist tbody tr td.ColumnParents span.father,
table.infolist tbody tr td.ColumnParents span.mother {
display: block;
}
@@ -595,9 +585,6 @@ div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
#familymap a.familymap {
margin-left:20px;
}
a.family_map {
margin-left: 20px;
}
/* Surnames
----------------------------------------------------- */
@@ -605,11 +592,11 @@ a.family_map {
margin: 0;
padding: 0;
}
table.surnamelist thead tr th.ColumnSurname,
table.surnamelist thead tr th.ColumnSurname,
#Surnames table.surnamelist tbody tr td.ColumnSurname {
width: 50%;
}
table#SortByName thead tr th.ColumnSurname,
table#SortByName thead tr th.ColumnSurname,
table#SortByCount thead tr th.ColumnQuantity {
background-color: #00029D;
color: #FFF;
@@ -620,7 +607,7 @@ table.surnamelist thead tr th.ColumnSurname a {
table.surnamelist thead tr th.ColumnSurname a:hover {
color: #000;
}
table#SortByName thead tr th.ColumnSurname a:after,
table#SortByName thead tr th.ColumnSurname a:after,
table#SortByCount thead tr th.ColumnQuantity a:after {
content: " ↓";
}
@@ -671,9 +658,11 @@ div#Places table.infolist tbody tr td.ColumnLongitude {
}
div#PlaceDetail h5 {
font: bold .7cm serif;
float: center;
text-align: center;
border-bottom: double 4px #13A926;
}
/* EventList and EventDetail
------------------------------------------------------ */
@@ -684,40 +673,18 @@ div#EventList, div#EventDetail {
table.eventlist tbody tr td.ColumnEvent {
width: 10%;
}
table.eventlist tbody tr td.ColumnPlace {
width: 25%;
}
table.eventlist tbody tr td.ColumnNotes {
width: 20%;
}
table.eventlist tbody tr td.ColumnSources {
vertical-align: top;
width: 5%;
}
table.eventlist tbody tr td.ColumnPerson {
width: 35%;
}
table.eventlist th.ColumnDate {
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#families table.infolist th.ColumnEvent {
width: 10%;
padding-left: 0px;
}
#families table.infolist td.ColumnAttribute {
padding-left: 0px;
}
div#IndividualDetail div#families table.eventlist tr td {
border-bottom: dashed 1px #000;
}
@@ -749,7 +716,7 @@ div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
div#EventList table.alphaevent tbody tr td.ColumnPerson {
width: 50%;
}
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
display:block;
}
@@ -774,14 +741,14 @@ div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
div#EventDetail table.eventlist tbody tr td.ColumnDate {
border-top: solid 1px #000;
}
/* Events
----------------------------------------------------- */
#EventList table.infolist tr td a,
#EventDetail table.infolist tr td a {
display: inline;
}
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.mother,
#EventDetail table.infolist tr td span.father,
#EventDetail table.infolist tr td span.mother {
@@ -893,6 +860,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
}
#GalleryDetail div#summaryarea table.gallery {
padding-bottom: 0;
margin: 1 .5em 0 0;
border-style: solid;
border-width: 2px 0 1px 0;
border-color: #000;
@@ -978,9 +946,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
text-decoration: none;
}
/* Download
/* Download
----------------------------------------------------- */
div#Download {
div#Download {
margin: 0;
width: 100%;
}
@@ -994,7 +962,7 @@ div#Download table.download {
div#Download table.download tbody tr#Row02 {
border-bottom: solid 2px #000;
}
div#Download table.download tbody tr td {
div#Download table.download tbody tr td {
border: solid 1px #000;
text-align: left;
}
@@ -1018,9 +986,6 @@ div#Download table.download td.ColumnModified {
margin: 0;
padding: 0;
}
#Sources table.infolist tr td.ColumnName {
width: 70%;
}
div#SourceDetail {
min-height: 900px
}
@@ -1129,14 +1094,8 @@ div#events h4 {
#IndividualDetail div#events table.eventtable {
width: 100%;
}
#families table.eventlist tbody tr td.ColumnEvent {
vertical-align: top;
width: 8%;
}
div#RelationshipDetail table.infolist tbody tr td.ColumnAttribute,
div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
vertical-align: top;
width: 10%;
table.eventlist tbody tr td.ColumnEvent {
width: 12%;
}
#IndividualDetail div#events table.infolist tbody tr td {
padding-top: .4em;
@@ -1223,10 +1182,6 @@ div#Families table.infolist tbody tr td.ColumnAttribute {
}
div#families table.infolist tbody tr td.ColumnValue p {
margin-top: 0;
margin-left: 0;
}
div#families table.infolist tbody tr td.ColumnValue {
width: 70%;
}
div#families table.infolist tbody tr td.ColumnValue ol {
margin: 0;
@@ -1241,22 +1196,6 @@ div#families table.infolist tbody tr td.ColumnValue ol li a {
div#families table.fixed_subtables table.eventlist {
table-layout:fixed;
}
div#families table.fixed_subtables table.eventlist th.ColumnDate {
width: 12%;
}
div#families table.fixed_subtables table.eventlist th.ColumnSources {
width: 5em;
}
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
width: 60%;
}
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
width: 20%;
}
div#families table.fixed_subtables .BeginFamily .ColumnType {
width: 7em;
vertical-align: top;
}
/* Subsection: Families: Attributes
------------------------------------------------- */
@@ -1273,14 +1212,17 @@ SourcesType {
div#families table.infolist tbody tr td.Value {
width: 15%;
}
div#families table.infolist tr td.Notes {
width: 40%;
}
div#families table.infolist tbody tr td.Sources {
width: 5%;
width: 15%;
}
/* Subsection: Families: LDS Ordinance
------------------------------------------------------ */
div#families table.infolist {
font: normal .9em sans;
font: normal .8em sans;
}
div#families table.infolist tbody tr.BeginOrdinance {
border-top: solid 1px #000;
@@ -1421,6 +1363,7 @@ div.Residence table.infolist tr td {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -1465,22 +1408,9 @@ div.narrative {
font: normal .9em/1.4em sans-serif;
margin: 0.1em 0 0.2em 0;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 3em;
}
/* Subsections : References
----------------------------------------------------- */
@@ -1520,9 +1450,6 @@ div#summaryarea table.infolist tr td, div#summaryarea table.infolist tr td p {
font: normal .9em/1.2em sans-serif;
vertical-align: top;
}
div#summaryarea table.infolist tr td.ColumnValue {
width: 70%;
}
div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a {
display:inline;
}
@@ -1552,7 +1479,7 @@ table.WebLinks tbody tr td.ColumnPath {
width: 50%;
}
table.weblinks tbody tr td.ColumnDescription {
width: 80%;
width: 30%;
}
/* Subsections : Pedigree
@@ -1606,7 +1533,7 @@ div#pedigree {
/* Calendar Styles
-------------------------------------------------------------------------------------------- */
#OneDay, #WebCal, #YearGlance {
width: 100%
width: 95%
}
/* Calendar : General */
.calendar {
@@ -1635,10 +1562,19 @@ div#pedigree {
color: #542;
padding:.3em 0 .2em 0;
background-color: #FFF;
vertical-align: top;
height: 2em;
}
.calendar thead tr th.weekend,
#CreatorInfo {
float:right;
color: #FFF;
margin:-24px 10px 0 0;
}
#CreatorInfo a {
color: #FFF;
}
#CreatorInfo a:hover {
color: #FFF;
}
.calendar thead tr th.weekend,
.calendar thead tr th.weekday {
font-style:italic;
color: #000;
@@ -1661,8 +1597,8 @@ div#pedigree {
font-size:1.2em;
line-height:100%;
text-align:center;
border: 5px solid rgba(0,0,0,.0);
color: #542;
margin:0 0 0 .5em;
padding:.2em 0;
background-color: #D8F3D6;
}
@@ -1702,12 +1638,9 @@ div#pedigree {
display:block;
width:92%;
margin:0 4%;
padding:.6em 0 .3em 0;
padding:.2em 0 .3em 0;
border-top: dashed 1px #000;
}
.calendar tbody tr td ul li:first-child {
border-top: 10px;
}
/* Calendar : Birthday, Anniversary, Highlight */
.calendar tbody tr td ul li em {
@@ -1725,9 +1658,9 @@ div#pedigree {
}
/* Calendar : Previous-Next Month */
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.next div.date {
color: #333;
background-color: #D8F3D6;
@@ -1738,10 +1671,13 @@ body#fullyearlinked {
background-color: #FFF;
}
body#fullyearlinked div.content {
width:963px;
margin:0 auto;
padding:15px 0 2px 2px;
}
body#fullyearlinked table.calendar {
float:left;
width:320px;
height:18em;
border:solid 1px #000;
}
@@ -1756,8 +1692,10 @@ body#fullyearlinked table.calendar thead tr th.monthName {
padding:2px 0;
border-bottom: solid 1px #000;
}
body#fullyearlinked table.calendar tbody tr td {
height:3em;
}
body#fullyearlinked table.calendar tbody tr td.emptyDays {
height:52px;
background-color: #FFF;
}
body#fullyearlinked table.calendar tbody tr td.saturday {
@@ -1795,43 +1733,3 @@ table.oneday tbody tr td.ColumnText {
table.oneday tbody tr td.ColumnEvent {
width: 10%;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #000290;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 3px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+39 -174
View File
@@ -1,15 +1,14 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Basic - Cypress
Style Author: Jason Simanek (2008)
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
original 'Tranquil' stylesheet
*******************************************************************************
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Tranquil' stylesheet
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
@@ -17,7 +16,7 @@ developed and governed by genealogists.
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>
@@ -37,10 +36,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
black #000
slate dark #454
@@ -48,14 +47,14 @@ slate #7C8F7C
slate light #9DBF9D
slate very light #E0E6E0
white #FFF
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
General Elements
----------------------------------------------------- */
@@ -97,16 +96,6 @@ body > div {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -240,7 +229,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -266,6 +255,11 @@ div#nav::after {
.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 */
@@ -287,14 +281,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 35px;
border: 0px;
color: #E0E6E0;
background-color: #454;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -305,10 +296,11 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
color: #454;
background-color: #454;
background-color: #E0E6E0;
/* required by IE */
float: left;
clear: both;
@@ -377,6 +369,9 @@ td.ColumnLetter, td.ColumnRowLabel {
td.ColumnEvent, td.ColumnDate {
white-space: nowrap;
}
td.ColumnPlace, td.ColumnDescription {
width: 20%
}
/* end of customizations by Stephane */
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
font-size: 90%;
@@ -435,31 +430,12 @@ table.surname td.ColumnName {
table.surname td.ColumnName > a {
padding-left: 15px;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #9DBF9D;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #9DBF9D;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #9DBF9D;
}
/* Individuals
----------------------------------------------------- */
table.IndividualList td.ColumnSurname {
background-color: #E0E6E0;
}
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #9DBF9D;
}
/* Places
----------------------------------------------------- */
@@ -473,10 +449,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#Places table.infolist td.ColumnName > a {
padding-left: 1ex;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #9DBF9D;
}
/* Events
----------------------------------------------------- */
@@ -492,10 +464,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #9DBF9D;
}
#EventList td.ColumnPerson span.person:after,
#EventList td.ColumnPerson span.father:after,
#EventList td.ColumnPerson span.mother:after,
@@ -516,49 +484,10 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
table.eventlist tbody tr td:first-child,
table.eventlist thead tr th:first-child {
padding-left: 15px;
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#events table.eventlist td.ColumnDate {
padding-left: 15px;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
#families table.eventlist tbody tr td.ColumnDate,
#families table.eventlist tbody tr td.ColumnNotes {
padding-left: 15px;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
table.eventlist th.ColumnDate {
padding-left: 15px;
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -613,10 +542,6 @@ table.eventlist td.ColumnPlace {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #9DBF9D;
}
/* Contact
----------------------------------------------------- */
@@ -686,10 +611,6 @@ div#SourceDetail {
/* Subsection : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color: #9DBF9D;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
@@ -741,6 +662,7 @@ div#families table.attrlist td.ColumnType {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -788,21 +710,11 @@ div.snapshot div.thumbnail {
h4 + div.grampsstylednote, a.familymap {
margin: 1em 15px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
margin-bottom: 0.5em;
}
/* Subsection : Family Map
@@ -810,9 +722,6 @@ div.grampsstylednote p {
a.familymap {
display: block;
}
a.family_map {
margin-left: 15px;
}
/* Subsection : Source References
----------------------------------------------------- */
@@ -878,16 +787,10 @@ a.family_map {
padding-right: 15px;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
----------------------------------------------------- */
body#FamilyMap {
background-color: #454 !important;
background-color: #454 ! important;
}
/* Calendar Styles
@@ -906,12 +809,16 @@ table.calendar {
background-color: white;
border-bottom-style: none;
padding-top: 1em;
vertical-align: top;
height: 2em;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 15px 0px 0px;
font-weight: bold;
color: #7C8F7C;
}
.calendar tfoot tr td {
border-top: solid 4px #7C8F7C;
vertical-align: middle;
@@ -929,7 +836,7 @@ table.calendar {
/* Calendar : Date Container */
.calendar td {
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
border-width: 1px 0px 0px 1px;
border-style: solid;
border-color: #9DBF9D;
@@ -937,7 +844,7 @@ table.calendar {
}
.calendar td:first-child {
border-left-style: none;
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
}
.calendar tbody tr:first-child td {
border-top-style: none;
@@ -985,6 +892,8 @@ body#fullyearlinked div.content {
overflow: hidden;
}
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
height: 18em;
border: solid 1px black;
}
@@ -1001,47 +910,3 @@ body#fullyearlinked table.calendar tbody td {
body#OneDay div.content {
overflow: hidden;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #454;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 6px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+38 -180
View File
@@ -1,15 +1,14 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Basic - Lilac
Style Author: Jason M. Simanek (2008)
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
original 'Business' stylesheet
*******************************************************************************
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Business' stylesheet
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
@@ -17,7 +16,7 @@ developed and governed by genealogists.
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>
@@ -37,10 +36,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
black #000
lilac dark #2E2E61
@@ -48,14 +47,14 @@ lilac #669
lilac light #B4B4CB
lilac very light #E0E0E9
white #FAFAFF
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
General Elements
----------------------------------------------------- */
@@ -97,16 +96,6 @@ body > div {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -238,7 +227,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -264,6 +253,11 @@ div#nav::after {
.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 */
@@ -285,14 +279,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 35px;
border: 0px;
color: #2E2E61;
background-color: #E0E0E9;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -303,6 +294,7 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #669;
@@ -423,31 +415,12 @@ table.surname td.ColumnName {
table.surname td.ColumnName > a {
padding-left: 15px;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #B4B4CB;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #B4B4CB;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #B4B4CB;
}
/* Individuals
----------------------------------------------------- */
table.IndividualList td.ColumnSurname {
background-color: #E0E0E9;
}
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #B4B4CB;
}
/* Places
----------------------------------------------------- */
@@ -464,10 +437,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#Places table.infolist td.ColumnName > a {
padding-left: 1ex;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #B4B4CB;
}
/* Events
----------------------------------------------------- */
@@ -483,10 +452,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #B4B4CB;
}
#EventList td.ColumnPerson span.person:after,
#EventList td.ColumnPerson span.father:after,
#EventList td.ColumnPerson span.mother:after,
@@ -507,55 +472,10 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#events table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
#families table.eventlist tbody tr td.ColumnDate,
#families table.eventlist tbody tr td.ColumnNotes {
padding-left: 20px;
}
table.eventlist tbody tr td:first-child,
table.eventlist thead tr th:first-child {
padding-left: 10px;
}
table.eventlist tbody tr td.ColumnSources {
padding-left: 20px;
width: 5%;
}
#families table.eventlist th.ColumnDate {
padding-left: 20px;
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -610,10 +530,6 @@ table.eventlist td.ColumnPlace {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #B4B4CB;
}
/* Contact
----------------------------------------------------- */
@@ -683,10 +599,6 @@ div#SourceDetail {
/* Subsection : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color: #B4B4CB;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
@@ -738,6 +650,7 @@ div#families table.attrlist td.ColumnType {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -785,21 +698,11 @@ div.snapshot div.thumbnail {
h4 + div.grampsstylednote, a.familymap {
margin: 1em 15px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
margin-bottom: 0.5em;
}
/* Subsection : Family Map
@@ -807,9 +710,6 @@ div.grampsstylednote p {
a.familymap {
display: block;
}
a.family_map {
margin-left: 15px;
}
/* Subsection : Source References
----------------------------------------------------- */
@@ -874,16 +774,10 @@ a.family_map {
background-color: #B4B4CB;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
----------------------------------------------------- */
body#FamilyMap {
background-color: #E0E0E9 !important;
background-color: #E0E0E9 ! important;
}
/* Calendar Styles
@@ -902,12 +796,19 @@ table.calendar {
background-color: #FAFAFF;
border-bottom-style: none;
padding-top: 1em;
vertical-align: top;
height: 2em;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 15px 0px 0px;
font-weight: bold;
color: #669;
}
#CreatorInfo a[href]:hover {
background-color: #B4B4CB;
}
.calendar tfoot tr td {
border-top: solid 4px #669;
vertical-align: middle;
@@ -925,7 +826,7 @@ table.calendar {
/* Calendar : Date Container */
.calendar td {
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
border-width: 1px 0px 0px 1px;
border-style: solid;
border-color: #B4B4CB;
@@ -933,7 +834,7 @@ table.calendar {
}
.calendar td:first-child {
border-left-style: none;
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
}
.calendar tbody tr:first-child td {
border-top-style: none;
@@ -984,6 +885,8 @@ body#fullyearlinked div.content {
overflow: hidden;
}
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
height: 18em;
border: solid 1px black;
}
@@ -1000,48 +903,3 @@ body#fullyearlinked table.calendar tbody td {
body#OneDay div.content {
overflow: hidden;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #2E2E61;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 6px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+39 -182
View File
@@ -1,15 +1,14 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Basic-Peach Stylesheet
Style Author: Jason M. Simanek (2008)
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange
color scheme.
*******************************************************************************
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange color scheme.
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
@@ -17,7 +16,7 @@ developed and governed by genealogists.
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>
@@ -37,10 +36,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
black #36220B
brown #8C581C
@@ -48,14 +47,14 @@ orange dark #EA8414
orange #FFC35E
orange light #FFE09F
yellow light #FFFBE7
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
General Elements
----------------------------------------------------- */
@@ -97,16 +96,6 @@ body > div {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -238,7 +227,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -264,6 +253,11 @@ div#nav::after {
.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 */
@@ -285,14 +279,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 35px;
border: 0px;
color: #EA8414;
background-color: #FFE09F;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -303,6 +294,7 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #FFC35E;
@@ -423,31 +415,12 @@ table.surname td.ColumnName {
table.surname td.ColumnName > a {
padding-left: 15px;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #FFC35E;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #FFC35E;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #FFC35E;
}
/* Individuals
----------------------------------------------------- */
table.IndividualList td.ColumnSurname {
background-color: #FFE09F;
}
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #FFC35E;
}
/* Places
----------------------------------------------------- */
@@ -464,10 +437,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#Places table.infolist td.ColumnName > a {
padding-left: 1ex;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #FFC35E;
}
/* Events
----------------------------------------------------- */
@@ -483,10 +452,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #FFC35E;
}
#EventList td.ColumnPerson span.person:after,
#EventList td.ColumnPerson span.father:after,
#EventList td.ColumnPerson span.mother:after,
@@ -507,57 +472,10 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#events table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist th.ColumnDate {
width: 15%;
padding-left: 20px;
}
#families table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
#families table.eventlist tbody tr td.ColumnDate,
#families table.eventlist tbody tr td.ColumnNotes {
padding-left: 20px;
}
table.eventlist tbody tr td:first-child,
table.eventlist thead tr th:first-child {
padding-left: 10px;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
table.eventlist th.ColumnDate {
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -611,10 +529,6 @@ table.eventlist td.ColumnPlace {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #FFC35E;
}
/* Contact
----------------------------------------------------- */
@@ -684,10 +598,6 @@ div#SourceDetail {
/* Subsection : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color: #FFC35E;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
@@ -739,6 +649,7 @@ div#families table.attrlist td.ColumnType {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -786,21 +697,11 @@ div.snapshot div.thumbnail {
h4 + div.grampsstylednote, a.familymap {
margin: 1em 15px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
margin-bottom: 0.5em;
}
/* Subsection : Family Map
@@ -808,9 +709,6 @@ div.grampsstylednote p {
a.familymap {
display: block;
}
a.family_map {
margin-left: 15px;
}
/* Subsection : Source References
----------------------------------------------------- */
@@ -875,17 +773,11 @@ a.family_map {
background-color: #FFC35E;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
----------------------------------------------------- */
button#drop {
background-color: #FFE09F;
border: solid 1px #EA8414 !important;
border: solid 1px #EA8414 ! important;
}
button#drop:hover {
background-color: #FFC35E;
@@ -913,12 +805,19 @@ table.calendar {
background-color: #FFFBE7;
border-bottom-style: none;
padding-top: 1em;
vertical-align: top;
height: 2em;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 15px 0px 0px;
font-weight: bold;
color: #8C581C;
}
#CreatorInfo a[href]:hover {
background-color: #FFC35E;
}
.calendar tfoot tr td {
border-top: solid 4px #8C581C;
vertical-align: middle;
@@ -927,6 +826,7 @@ table.calendar {
/* Calendar : Date Numeral */
.calendar div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #FFC35E;
@@ -935,7 +835,7 @@ table.calendar {
/* Calendar : Date Container */
.calendar td {
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
border-width: 1px 0px 0px 1px;
border-style: solid;
border-color: #FFC35E;
@@ -943,7 +843,7 @@ table.calendar {
}
.calendar td:first-child {
border-left-style: none;
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
}
.calendar tbody tr:first-child td {
border-top-style: none;
@@ -994,6 +894,8 @@ body#fullyearlinked div.content {
overflow: hidden;
}
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
height: 18em;
border: solid 1px #36220B;
}
@@ -1010,48 +912,3 @@ body#fullyearlinked table.calendar tbody td {
body#OneDay div.content {
overflow: hidden;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #EA8414;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 6px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+38 -182
View File
@@ -1,15 +1,14 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Basic-Spruce Stylesheet
Style Author: Jason M. Simanek (2008)
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue
color scheme.
*******************************************************************************
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue color scheme.
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
@@ -17,7 +16,7 @@ developed and governed by genealogists.
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>
@@ -38,10 +37,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
black #000
blue dark #204D91
@@ -49,14 +48,14 @@ blue #7CA3DD
blue light #BFD0EA
blue very light #EAEEF4
white #FFF
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
General Elements
----------------------------------------------------- */
@@ -98,16 +97,6 @@ body > div {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
@@ -239,7 +228,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -265,6 +254,11 @@ div#nav::after {
.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 */
@@ -286,14 +280,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 35px;
border: 0px;
color: #204D91;
background-color: #EAEEF4;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -304,6 +295,7 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #EEE;
@@ -424,31 +416,12 @@ table.surname td.ColumnName {
table.surname td.ColumnName > a {
padding-left: 15px;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #BFD0EA;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #BFD0EA;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #BFD0EA;
}
/* Individuals
----------------------------------------------------- */
table.IndividualList td.ColumnSurname {
background-color: #EAEEF4;
}
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #EAEEF4;
}
/* Places
----------------------------------------------------- */
@@ -465,10 +438,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#Places table.infolist td.ColumnName > a {
padding-left: 1ex;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #BFD0EA;
}
/* Events
----------------------------------------------------- */
@@ -484,10 +453,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #BFD0EA;
}
#EventList td.ColumnPerson span.person:after,
#EventList td.ColumnPerson span.father:after,
#EventList td.ColumnPerson span.mother:after,
@@ -508,57 +473,10 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#events table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist th.ColumnDate {
width: 15%;
padding-left: 20px;
}
#families table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
#families table.eventlist tbody tr td.ColumnDate,
#families table.eventlist tbody tr td.ColumnNotes {
padding-left: 20px;
}
table.eventlist tbody tr td:first-child,
table.eventlist thead tr th:first-child {
padding-left: 10px;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
table.eventlist th.ColumnDate {
width: 15%;
}
table.eventlist td.ColumnEvent,
table.eventlist td.ColumnDate,
table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -612,10 +530,6 @@ table.eventlist td.ColumnPlace {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #BFD0EA;
}
/* Contact
----------------------------------------------------- */
@@ -685,10 +599,6 @@ div#SourceDetail {
/* Subsection : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color: #BFD0EA;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
@@ -740,6 +650,7 @@ div#families table.attrlist td.ColumnType {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -787,21 +698,11 @@ div.snapshot div.thumbnail {
h4 + div.grampsstylednote, a.familymap {
margin: 1em 15px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
margin-bottom: 0.5em;
}
/* Subsection : Family Map
@@ -809,9 +710,6 @@ div.grampsstylednote p {
a.familymap {
display: block;
}
a.family_map {
margin-left: 15px;
}
/* Subsection : Source References
----------------------------------------------------- */
@@ -876,16 +774,10 @@ a.family_map {
background-color: #BFD0EA;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
----------------------------------------------------- */
body#FamilyMap {
background-color: #EAEEF4 !important;
background-color: #EAEEF4 ! important;
}
/* Calendar Styles
@@ -904,12 +796,19 @@ table.calendar {
background-color: #FFF;
border-bottom-style: none;
padding-top: 1em;
vertical-align: top;
height: 2em;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 15px 0px 0px;
font-weight: bold;
color: #7CA3DD;
}
#CreatorInfo a[href]:hover {
background-color: #BFD0EA;
}
.calendar tfoot tr td {
border-top: solid 4px #7CA3DD;
vertical-align: middle;
@@ -927,7 +826,7 @@ table.calendar {
/* Calendar : Date Container */
.calendar td {
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
border-width: 1px 0px 0px 1px;
border-style: solid;
border-color: #BFD0EA;
@@ -935,7 +834,7 @@ table.calendar {
}
.calendar td:first-child {
border-left-style: none;
padding: 0px 5px 0px 1ex;
padding: 0px 0px 0px 1ex;
}
.calendar tbody tr:first-child td {
border-top-style: none;
@@ -986,6 +885,8 @@ body#fullyearlinked div.content {
overflow: hidden;
}
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
height: 18em;
border: solid 1px black;
}
@@ -1002,48 +903,3 @@ body#fullyearlinked table.calendar tbody td {
body#OneDay div.content {
overflow: hidden;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #204D91;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
padding-left: 6px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+1 -1
View File
@@ -10,7 +10,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.
+7 -4
View File
@@ -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.
@@ -77,7 +77,8 @@ ul#dropmenu li:hover > a {
color: #fafafa
}
*html ul#dropmenu li a:hover /* IE6 */ {
*html ul#dropmenu li a:hover /* IE6 */
{
color: #fafafa
}
ul#dropmenu li:hover > ul {
@@ -128,11 +129,13 @@ ul#dropmenu ul a {
float: none;
text-transform: none;
}
*html ul#dropmenu ul a /* IE6 */ {
*html ul#dropmenu ul a /* IE6 */
{
height: 10px;
width: 150px;
}
*:first-child+html ul#dropmenu ul a /* IE7 */ {
*:first-child+html ul#dropmenu ul a /* IE7 */
{
height: 10px;
width: 150px;
}
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -10,7 +10,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.
+37 -196
View File
@@ -58,7 +58,7 @@ Middle Light images/Web_Mainz_MidLight.png
NarrativeWeb Styles
----------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
General Elements
-----------------------------------------------------------------*/
@@ -69,6 +69,7 @@ body {
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
}
body > div {
width: 85%;
margin: 0px auto;
overflow: hidden;
}
@@ -99,18 +100,9 @@ div.snapshot a {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
/* General Text
-----------------------------------------------------------------*/
h1 {
@@ -150,8 +142,7 @@ a {
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #D8C19F;
font-style: italic;
background-color: #FFFFE7;
}
.grampsid {
font-family: monospace;
@@ -168,7 +159,7 @@ a[href]:hover, a[href]:active {
/* Navigation
-----------------------------------------------------------------*/
div#nav, #subnavigation {
background: url(../images/Web_Mainz_Mid.png) repeat-x top left;
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6 repeat;
}
div#nav ul, #subnavigation ul {
list-style-type: none;
@@ -234,7 +225,7 @@ div#alphanav ul li a:hover {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
}
@@ -260,6 +251,11 @@ div#nav::after {
.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 */
@@ -281,14 +277,11 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 80px;
border: 0px;
color: #7D5925;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -299,8 +292,8 @@ div#nav::after {
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
height:1.4em;
text-align: left;
background-color: #D8C19F;
/* required by IE */
@@ -384,40 +377,12 @@ table#SortByName thead th.ColumnSurname a:after,
table#SortByCount thead th.ColumnQuantity a:after {
content: " \2193";
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color: #D8C19F;
}
table#SortByName tbody tr:hover,
table#SortByCount tbody tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color: #D8C19F;
}
table.surname tbody tr:hover,
table.surname tr:hover td.ColumnName {
background-color: #D8C19F;
}
#SurnameDetail h3 {
border-bottom-width: 0px;
padding-bottom: 0px;
margin: 0px;
}
/* Individuals
----------------------------------------------------- */
#parents table.infolist tbody tr:hover,
table.IndividualList tbody tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color: #D8C19F;
}
/* Places
----------------------------------------------------- */
#Places table.infolist tbody tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color: #D8C19F;
}
/* Events
-----------------------------------------------------------------*/
#EventList tr.BeginType td {
@@ -431,10 +396,6 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventList td.ColumnPerson a {
display: inline;
}
#EventList table.infolist tbody tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color: #D8C19F;
}
/* Family events, put mother on next line */
#EventList td.ColumnPerson span.father,
#EventList td.ColumnPerson span.mother,
@@ -458,57 +419,9 @@ table.IndividualList tr:hover td.ColumnSurname {
#EventDetail td.ColumnPerson span.mother:last-child:after {
content: "";
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
table.eventlist tbody tr td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#events table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist th.ColumnDate {
width: 15%;
padding-left: 25px;
}
#families table.eventlist td.ColumnDate {
width: 15%;
padding-left: 20px;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
#families table.eventlist tbody tr td.ColumnDate,
#families table.eventlist tbody tr td.ColumnNotes {
padding-left: 25px;
}
#IndividualDetail div table.eventlist td.ColumnEvent {
padding-right: 0px;
width: 8%;
}
#IndividualDetail div table.eventlist td.ColumnSources {
width: 5%;
}
#IndividualDetail div table.eventlist td.ColumnDate {
padding-right: 0px;
width: 15%;
}
#IndividualDetail div table.eventlist td.ColumnEvent,
#IndividualDetail div table.eventlist td.ColumnDate,
#IndividualDetail div table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
@@ -569,10 +482,6 @@ table.IndividualList tr:hover td.ColumnSurname {
div#SourceDetail {
margin: 0 auto;
}
#Sources table.infolist tbody tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color: #D8C19F;
}
/* Contact
-----------------------------------------------------------------*/
@@ -639,10 +548,6 @@ div#SourceDetail {
/* SubSection : Families
-----------------------------------------------------------------*/
#families table.infolist td.ColumnValue.Child table.infolist tbody tr:hover,
table.relationships tr:hover td {
background-color: #D8C19F;
}
div#families table.fixed_subtables table.eventlist {
table-layout: fixed;
}
@@ -661,6 +566,9 @@ div#families .infolist h4 {
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
@@ -685,6 +593,7 @@ div#families .infolist h4 {
font-size: smaller;
text-align: center;
margin: 0.5em;
background-color: white;
}
#indivgallery img {
border: solid 1px #7D5925;
@@ -695,6 +604,7 @@ div#families .infolist h4 {
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -736,24 +646,11 @@ h4 + div.grampsstylednote, a.familymap {
margin-left: 10px;
margin-right: 10px;
}
a.family_map {
margin-left: 10px;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0 0 0.3em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
/* Subsection : References
----------------------------------------------------- */
#references ol {
margin-left: 2em;
margin-bottom: 0.5em;
}
/* SubSection : Source References
@@ -821,22 +718,16 @@ div.grampsstylednote p {
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Overwritten
-----------------------------------------------------------------*/
button#drop {
font-style: italic;
color: #FFF2C6;
background: url(../images/Web_Mainz_Bkgd.png) #7D5925 repeat;
border: outset 3px black !important;
border: outset 3px black ! important;
}
div#map_canvas {
border-color: #7D5925 !important;
border-color: #7D5925 ! important;
}
/* Calendar Styles
@@ -856,24 +747,28 @@ table.calendar {
.calendar thead th.monthName {
font-size: xx-large;
color: #767D25;
vertical-align: top;
height: 2em;
border-bottom-style: none;
border-bottom-color: #7D5925;
}
.calendar thead th abbr {
border-bottom-style: none;
}
#CreatorInfo {
float: right;
margin: -1em 0px 0px 0px;
font-weight: bold;
font-style: italic;
}
.calendar tfoot td {
border-top: double 4px #7D5925;
}
/* Calendar : Date Numeral */
.calendar div.date {
width: 1.5em;
float: right;
width: 1.8em;
font-size: large;
font-style: italic;
text-align: center;
margin-top: 1px;
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6 repeat;
}
@@ -917,11 +812,10 @@ table.calendar {
color: #767D25;
}
.calendar td ul li span.yearsmarried em {
color: #767D25;
color: black;
}
.calendar td.highlight div.date {
color: #767D25;
margin-top: 1px;
background-image: none;
background-color: #FFFFE7;
}
@@ -934,6 +828,8 @@ table.calendar {
/* Calendar : Full Year */
body#fullyearlinked table.calendar {
float: left;
width: 315px;
height: 18em;
border: solid 1px #7D5925;
}
@@ -946,58 +842,3 @@ body#fullyearlinked table.calendar thead th.monthName {
body#fullyearlinked table.calendar tbody td {
height: 3em;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
text-align: center;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
padding: 2px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #7D5925;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
vertical-align: middle;
text-align: center;
padding-left: 8px;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td.previous .date:hover,
body#fullyearlinked #YearGlance tbody td.next .date:hover {
border-radius: 10px;
border: 5px solid;
}
body#fullyearlinked #YearGlance tbody td div.empty .date:hover {
border-radius: 10px;
border: 5px solid;
}
body#fullyearlinked #YearGlance tbody td.highlight .date:hover {
border-radius: 45px;
border: 5px solid;
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
}
+54 -222
View File
@@ -1,21 +1,21 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Nebraska Default Stylesheet
Style Author: Jason M. Simanek (2008)
*******************************************************************************
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
developed and governed by genealogists.
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>
@@ -34,10 +34,10 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
brown darkest #453619
brown dark #542
brown #A97
@@ -45,14 +45,14 @@ brown light #C1B398
brown lightest #F6F2EE
gray #696969
green #5D835F
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
General Elements
---------------------------------------------------------------------------- */
----------------------------------------------------- */
body {
color:#000;
@@ -118,16 +118,6 @@ img {
.content {
padding: 0em 0.5em;
}
body#fullyearlinked table.calendar {
float: none;
width: 100%;
}
}
@media only screen and (width > 1080px) {
body#fullyearlinked table.calendar {
float: left;
width: 33.3%;
}
}
.fullclear {
width:100%;
@@ -172,7 +162,7 @@ p#description {
background-color:#FFF;
}
p a {
color:#542;
color:#FFF;
text-decoration:underline;
}
sup {
@@ -284,7 +274,7 @@ div#subnavigation ul li.CurrentSection a {
}
/* Responsive navigation */
button.navIcon {
a.navIcon {
display: none;
color: #FFF;
}
@@ -311,6 +301,11 @@ div#nav::after {
.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 */
@@ -332,14 +327,12 @@ div#nav::after {
.nav li {display: none;}
.nav ul {display: none;}
button.navIcon {
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
font-size:2.9em;
line-height: 70px;
border: 0px;
background-color: #542;
color: #FFF;
color: #FFF;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
@@ -355,6 +348,7 @@ div#nav::after {
background-color: #A97;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #A97;
@@ -458,20 +452,6 @@ table.surnamelist tr th a, table.surnamelist tr th a:visited {
table.surnamelist tr th:hover {
background-color:#C1B398;
}
table#SortByName tr:hover td.ColumnSurname,
table#SortByCount tr:hover td.ColumnQuantity {
background-color:#C1B398;
}
table#SortByName tr:hover,
table#SortByCount tr:hover,
table#SortByName tr:hover td.ColumnQuantity,
table#SortByCount tr:hover td.ColumnSurname {
background-color:#C1B398;
}
table.surname tr:hover,
table.surname tr:hover td.ColumnName {
background-color:#C1B398;
}
table.surnamelist thead tr th.ColumnLetter {
padding-left:20px;
padding-right:10px;
@@ -527,11 +507,6 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
/* Individuals
----------------------------------------------------- */
#parents table.infolist tr:hover,
table.IndividualList tr:hover,
table.IndividualList tr:hover td.ColumnSurname {
background-color:#C1B398;
}
#Individuals { }
#Individuals table.IndividualList {
border-bottom:solid 1px #A97;
@@ -575,7 +550,6 @@ table.IndividualList tbody tr td.ColumnName a:hover {
#IndividualDetail div table.infolist tr td {
font:normal .9em/1.2em sans-serif;
vertical-align:top;
padding-left: 5px;
}
#IndividualDetail div table.infolist tr td a {
display:inline;
@@ -588,15 +562,11 @@ table.IndividualList tbody tr td.ColumnName a:hover {
color:#696969;
}
#IndividualDetail div.subsection table tr td:first-child {
color:#696969;
padding-left:20px;
}
#familymap a.familymap {
margin-left:20px;
}
a.family_map {
margin-left: 20px;
}
/* Subsections : Attributes
----------------------------------------------------- */
@@ -629,10 +599,6 @@ table.attrlist tbody tr td.ColumnSources {
/* Sources
----------------------------------------------------- */
#Sources table.infolist tr:hover,
#Sources table.infolist tr:hover td.ColumnType {
background-color:#C1B398;
}
#Sources { }
#Sources table.infolist tbody tr td.ColumnRowLabel {
padding-bottom:0;
@@ -681,10 +647,6 @@ table.relationships tbody tr td.ColumnPartner a:hover {
#Places table.infolist tbody tr td.ColumnName {
padding:0;
}
#Places table.infolist tr:hover,
#Places table.infolist tr:hover td.ColumnName {
background-color:#C1B398;
}
#Places table.infolist tbody tr td.ColumnName a {
padding:.1em 10px .3em 10px;
}
@@ -704,11 +666,7 @@ table.relationships tbody tr td.ColumnPartner a:hover {
#EventDetail table.infolist tr td a {
display: inline;
}
#EventList table.infolist tr:hover,
#EventList table.infolist tr:hover td.ColumnType {
background-color:#C1B398;
}
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.mother,
#EventDetail table.infolist tr td span.father,
#EventDetail table.infolist tr td span.mother {
@@ -730,27 +688,10 @@ table.relationships tbody tr td.ColumnPartner a:hover {
#EventDetail table.infolist tr td span.mother:last-child:after {
content: "";
}
#IndividualDetail div table.eventlist tbody tr td:first-child,
#IndividualDetail div table.eventlist thead tr th:first-child {
padding-left: 10px;
}
#IndividualDetail div table.eventlist tbody tr td.ColumnSources {
padding-left: 5px;
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
#IndividualDetail div table.eventlist tbody tr td.ColumnEvent {
padding-right: 0px;
width: 8%;
}
#IndividualDetail div table.eventlist tbody tr td.ColumnDate {
padding-left: 10px;
width: 15%;
}
#IndividualDetail div table.eventlist td.ColumnEvent,
#IndividualDetail div table.eventlist td.ColumnDate,
#IndividualDetail div table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -902,9 +843,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
text-decoration:underline;
}
/* Download
/* Download
----------------------------------------------------- */
#Download {
#Download {
padding:1cm;
height:396px;
}
@@ -924,7 +865,7 @@ table.download thead tr th {
table.download tbody tr#Row02 {
border-bottom:solid 2px #000;
}
table.download thead tr th, table.download tbody tr td {
table.download thead tr th, table.download tbody tr td {
padding-left:10px;
padding-top:20px;
border-style:solid;
@@ -1027,6 +968,9 @@ div#events h4 {
padding-bottom:4px;
background-color:#A97;
}
#IndividualDetail div#events table.infolist thead tr th:first-child {
padding-left:20px;
}
#IndividualDetail div#events table.infolist tbody tr td {
padding-top:.4em;
padding-bottom:.8em;
@@ -1042,51 +986,6 @@ table.infolist tbody tr td.ColumnValue p {
color:#696969;
margin:.2em 0 0 2em;
}
#attributes table.infolist td.ColumnType {
width: 10%;
padding-left: 15px;
}
#attributes table.infolist td.ColumnValue {
width: 15%;
}
#attributes table.infolist td.ColumnSources {
width: 5%;
padding-left: 5px;
}
#WebLinks table.weblinks tbody tr td:first-child {
vertical-align:middle;
}
#WebLinks table.weblinks td.ColumnType,
#WebLinks table.weblinks td.ColumnDescription {
}
#events table.eventlist td.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist th.ColumnDate {
width: 15%;
padding-left: 10px;
}
#families table.eventlist td.ColumnEvent,
#families table.eventlist td.ColumnDate,
#families table.eventlist td.ColumnPlace,
#families table.eventlist td.ColumnDescription,
#families table.eventlist td.ColumnSources {
padding-top:.4em;
padding-bottom:.8em;
}
#families table.eventlist td.ColumnDate {
width: 15%;
padding-left: 20px;
}
#families table.eventlist td.ColumnNotes {
font:normal 1.1em/1.4em sans-serif;
}
#families table.eventlist tbody tr td:first-child,
#families table.eventlist thead tr th:first-child {
width: 10%;
padding-left: 0px;
}
/* Subsections : Attributes
----------------------------------------------------- */
@@ -1109,15 +1008,10 @@ div#parents table.infolist tbody tr td.ColumnValue ol li {
/* Subsections : Families
----------------------------------------------------- */
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
table.relationships tr:hover {
background-color:#C1B398;
}
div#families table.infolist {
margin-top:.5em;
}
div#families table.infolist tbody tr td.ColumnValue p {
margin-left:0;
margin-top:0;
}
div#families table.infolist tbody tr td.ColumnValue ol {
@@ -1165,6 +1059,9 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
@@ -1187,10 +1084,11 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
float:left;
width:130px;
text-align:center;
background-color: #F6F2EE;
background-color: white;
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
@@ -1253,26 +1151,16 @@ div.snapshot div.thumbnail {
div.narrative {
padding-bottom:0;
}
i.NoteType {
font-weight: bold;
font-size: .8em;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
}
div.grampsstylednote p {
padding-bottom: 0.6em;
}
.narrative p {
margin: 0.1em 0 0.2em 0;
font:normal .9em/1.4em sans-serif;
}
/* Subsection : References
/* Subsections : References
----------------------------------------------------- */
#references ol {
margin-left: 3em;
}
/* Subsections : Source References
----------------------------------------------------- */
@@ -1414,12 +1302,6 @@ div#pedigree {
padding: 0;
}
/* Updates
----------------------------------------------------- */
#Updates table.list td.date {
width: 20%;
}
/* Calendar Styles
-------------------------------------------------------------------------------------------- */
/* Calendar : General */
@@ -1454,15 +1336,18 @@ body#WebCal {
color:#542;
padding:.3em 0 .2em 0;
background-color:#FFF;
vertical-align: top;
height: 2em;
}
.calendar thead tr th.weekend,
#CreatorInfo {
float:right;
color:#FFF;
margin:-24px 10px 0 0;
}
.calendar thead tr th.weekend,
.calendar thead tr th.weekday {
color:#542;
background-color:#A97;
}
.calendar thead tr th.saturday,
.calendar thead tr th.saturday,
.calendar thead tr th.sunday { }
.calendar tfoot tr td {
padding:.7em 5% 1em 5%;
@@ -1476,12 +1361,14 @@ body#WebCal {
/* Calendar : Date Numeral */
.calendar tbody tr td div.date {
float:none;
float:right;
display:block;
width:1.8em;
font-size:1.2em;
line-height:100%;
text-align:center;
color:#542;
margin:0 0 0 .5em;
padding:.2em 0;
background-color:#F6F2EE;
}
@@ -1544,25 +1431,26 @@ body#WebCal {
.calendar tbody tr td.highlight div.date {
color:#0A65B5;
background-color:#C2E1FE;
border: 5px solid rgba(255,255,255,.0);
}
/* Calendar : Previous-Next Month */
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.next div.date {
color:#A97;
background-color:#F6F2EE;
border: 5px solid rgba(255,255,255,.0);
}
/* Calendar : Full Year */
body#fullyearlinked div.content {
width:963px;
margin:0 auto;
padding:5px 0 2px 2px;
padding:15px 0 2px 2px;
}
body#fullyearlinked table.calendar {
float:left;
width:320px;
height:18em;
border:solid 1px #7D5925;
}
@@ -1576,59 +1464,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
body#fullyearlinked table.calendar tbody tr td {
height:3em;
}
body#OneDay h3 {
font-size: xx-large;
vertical-align: top;
height: 2em;
}
#WebCal table.calendar tfoot {
display: none;
}
#WebCal table.calendar tr td {
word-wrap: break-word;
border-bottom:solid 1px #7D5925;
border-right:solid 1px #7D5925;
padding-left: 0px;
}
#WebCal .calendar tr td .empty {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable {
border: 5px solid rgba(255,255,255,.0);
}
#WebCal .calendar tr td .clickable:hover {
display: block;
overflow:auto;
word-wrap: break-word;
cursor: text;
border-radius: 10px 0px 10px 10px;
border: 5px solid #453619;
padding: 0px;
}
body#fullyearlinked #YearGlance tbody td {
height:48px;
vertical-align: middle;
text-align: center;
}
body#fullyearlinked #YearGlance tbody td.previous {
border-width:0px 1px 1px 0px;
border-color:#C1B398;
}
body#fullyearlinked #YearGlance tbody td.next {
border-width:1px 0px 0px 1px;
border-color:#C1B398;
}
body#fullyearlinked #YearGlance tbody td .date {
font-size: 30px;
vertical-align: middle;
text-align: center;
border-radius: 45px;
margin-left: 5px;
margin-right: 5px;
float: none;
border: 5px solid rgba(0,0,0,.0);
}
body#fullyearlinked #YearGlance tbody td:hover .date {
border-radius: 45px;
border: 5px solid;
}
+24 -20
View File
@@ -1,22 +1,22 @@
/*
*******************************************************************************
**************************************************************************************************
Copyright Holder and License
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Print Style Sheet
Style Author: Jason M. Simanek (2008)
Modified by Rob G. Healey, July 2008
*******************************************************************************
**************************************************************************************************
This website was created with GRAMPS <http://www.gramps-project.org/>
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
GRAMPS is a Free Software Project for Genealogy, offering a professional
genealogy program, and a wiki open to all. It is a community project, created,
developed and governed by genealogists.
'Go to <http://gramps-project.org/> to learn more!
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
This file is part of the GRAMPS program.
@@ -31,21 +31,21 @@ 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
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
gray #A7A7A7
red #520
black #000
white #FFF
-------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
NarrativeWeb Styles
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
General Elements
General Elements
----------------------------------------------------- */
body {
@@ -419,7 +419,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
width: 90%;
}
/* Contact
/* Contact
----------------------------------------------------- */
#researcher {
margin:16pt 0 0 0;
@@ -456,13 +456,13 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
clear:left;
}
/* Subsections
/* Subsections
----------------------------------------------------- */
#Home, #Introduction, #Download, #Contact {
padding:3em 20px;
}
/* Subsections : Events
/* Subsections : Events
----------------------------------------------------- */
#IndividualDetail .ColumnValue {
padding:4pt 0;
@@ -472,7 +472,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
margin:1pt 0 0 18pt;
}
/* Subsections : Gallery
/* Subsections : Gallery
----------------------------------------------------- */
#indivgallery h4 {
margin-bottom:1em;
@@ -532,7 +532,7 @@ table.attrlist tbody tr td.ColumnSources {
width: 10%;
}
/* Subsections : Pedigree
/* Subsections : Pedigree
----------------------------------------------------- */
#pedigree a {
text-decoration:none;
@@ -574,7 +574,7 @@ table.attrlist tbody tr td.ColumnSources {
font-weight:bold;
}
/* Subsections : Ancestors Tree
/* Subsections : Ancestors Tree
----------------------------------------------------- */
#tree {
page-break-before:always;
@@ -674,7 +674,7 @@ p#createdate {
display: none;
}
/* Calendar Styles
/* Calendar Styles
-------------------------------------------------------------------------------------------- */
/* Calendar : General */
body#WebCal h1#SiteTitle {
@@ -719,6 +719,10 @@ body#WebCal h1#SiteTitle {
padding:5pt;
border-width:0;
}
#CreatorInfo {
float:right;
margin:0 10px 0 0;
}
body#WebCal a {
text-decoration:none;
color:#000;
@@ -791,9 +795,9 @@ body#WebCal a {
}
/* Calendar : Previous-Next Month */
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.next div.date {
font-weight:normal;
font-size:12pt;
+5 -6
View File
@@ -10,7 +10,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,18 +20,17 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Web_Navigation-Vertical.css Stylesheet
*******************************************************************************
***************************************************************************************************
# $Id: Web_Navigation-Vertical.css 15241 2010-04-19 11:07:00Z robhealey1 $
Body Element
----------------------------------------------------- */
body {
background: -webkit-gradient (linear, left top, left bottom,
from(#ccc), to(#fff));
body { background: -webkit-gradient
(linear, left top, left bottom, from(#ccc), to(#fff));
color: #000;
padding: 60px 0px 0px 146px;
}
+35 -39
View File
@@ -10,7 +10,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,15 +20,15 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Visually Impaired Stylesheet
Style Author: Jason M. Simanek (2008)
*******************************************************************************
***************************************************************************************************
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
Color Palette
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
brown dark #453619, #542
brown light #C1B398
gray #696969
@@ -47,7 +47,7 @@ Females Web_Gender_Female.png
NarrativeWeb Styles
---------------------------------------------------------------------------- */
-------------------------------------------------------------------------------------------- */
div#alphabet ul li {
background-color: #6AF364;
}
@@ -96,6 +96,8 @@ img {
background:none;
}
.content {
overflow: auto;
width:965px;
margin:0 auto;
padding-bottom: .2em;
}
@@ -347,7 +349,7 @@ table.infolist tbody tr td.ColumnPartner a {
table.infolist tbody tr td.ColumnParents {
font-size:.9em;
}
table.infolist tbody tr td.ColumnParents span.father,
table.infolist tbody tr td.ColumnParents span.father,
table.infolist tbody tr td.ColumnParents span.mother {
display:block;
}
@@ -364,7 +366,7 @@ table.infolist tbody tr td.ColumnParents span.mother:before {
#SurnameDetail p#description {
padding-top:0;
}
table.surnamelist thead tr th.ColumnSurname,
table.surnamelist thead tr th.ColumnSurname,
#Surnames table.surnamelist tbody tr td.ColumnSurname {
width:50%;
}
@@ -389,11 +391,11 @@ table.surnamelist tbody tr td.ColumnLetter a {
table.surnamelist tbody tr td.ColumnSurname {
background-color: #FFF;
}
table#SortByName thead tr th.ColumnSurname,
table#SortByName thead tr th.ColumnSurname,
table#SortByCount thead tr th.ColumnQuantity {
background-color: #C1B398;
}
table#SortByName thead tr th.ColumnSurname a:after,
table#SortByName thead tr th.ColumnSurname a:after,
table#SortByCount thead tr th.ColumnQuantity a:after {
content:" ↓";
}
@@ -441,7 +443,7 @@ table.surname tbody tr td.ColumnPartner a {
display:block;
padding:.6em 10px .6em 0px;
}
table.surname thead tr th.ColumnParents,
table.surname thead tr th.ColumnParents,
table.surname tbody tr td.ColumnParents {
width:25%;
}
@@ -463,7 +465,7 @@ 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:hover,
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
cursor:default;
color: #000;
@@ -664,7 +666,7 @@ div#EventList table.alphaevent tbody tr td.ColumnDate {
div#EventList table.alphaevent tbody tr td.ColumnPerson {
width: 60%;
}
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
display:block;
}
@@ -694,7 +696,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
div#EventDetail table.eventlist tbody tr td.ColumnPerson {
background-color: #D8F3D6;
}
/* Events
----------------------------------------------------- */
#EventList table.infolist tr.BeginType td {
@@ -707,7 +709,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
#EventDetail table.infolist tr td a {
display: inline;
}
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.father,
#EventList table.infolist tr td span.mother,
#EventDetail table.infolist tr td span.father,
#EventDetail table.infolist tr td span.mother {
@@ -729,20 +731,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
#EventDetail table.infolist tr td span.mother:last-child:after {
content: "";
}
#IndividualDetail div table.eventlist td.ColumnSources {
width: 5%;
}
#IndividualDetail div table.eventlist td.ColumnDate {
width: 15%;
}
#IndividualDetail div table.eventlist td.ColumnEvent {
width: 8%;
}
#IndividualDetail div table.eventlist td.ColumnEvent,
#IndividualDetail div table.eventlist td.ColumnDate,
#IndividualDetail div table.eventlist td.ColumnPlace {
font-weight: bold;
}
/* Gallery
----------------------------------------------------- */
@@ -911,7 +899,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
text-decoration:none;
}
/* Download
/* Download
----------------------------------------------------- */
div#Download {
margin: 0;
@@ -924,7 +912,7 @@ div#Download table.download {
div#Download table.download tbody tr#Row02 {
border-bottom: solid 1px #000;
}
div#Download table.download tbody tr td {
div#Download table.download tbody tr td {
border: solid 1px #000;
text-align: left;
padding: 5px 0px 5px 0px;
@@ -1209,7 +1197,6 @@ div#families table.infolist tbody tr td.ColumnValue {
}
div#families table.infolist tbody tr td.ColumnValue p {
margin-top:0;
margin-left:0;
}
div#families table.infolist tbody tr td.ColumnValue ol {
margin:0;
@@ -1499,10 +1486,19 @@ body#WebCal {
color: #542;
padding:.3em 0 .2em 0;
background-color: #FFF;
vertical-align: top;
height: 2em;
}
.calendar thead tr th.weekend,
#CreatorInfo {
float:right;
color: #FFF;
margin:-24px 10px 0 0;
}
#CreatorInfo a {
color: #FFF;
}
#CreatorInfo a:hover {
color: #FFF;
}
.calendar thead tr th.weekend,
.calendar thead tr th.weekday {
font-style:italic;
color: #000;
@@ -1594,9 +1590,9 @@ body#WebCal {
}
/* Calendar : Previous-Next Month */
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.previous,
.calendar tbody tr td.next,
.calendar tbody tr td.previous div.date,
.calendar tbody tr td.next div.date {
color: #333;
background-color: #D8F3D6;
@@ -1662,7 +1658,7 @@ table.oneday tbody tr td.ColumnText {
width: 85%;
}
table.oneday tbody tr td.ColumnEvent {
width: 10%;
width; 10%;
}
/* PlaceMaps
+1 -2
View File
@@ -33,14 +33,13 @@ Unknown #000
===== Web Graphics =====
Males Web_Gender_Male.png
Females Web_Gender_Female.png
# -------------------------------------------------------------------------- */
# -------------------------------------------------------------------------- #
/* Subsections : Ancestors Tree -------------------------------------------- */
#tree {
page-break-before:always;
margin:0;
padding:0;
background:none;
overflow-x:auto;
}
#treeContainer {
position:relative;
+2 -103
View File
@@ -31,7 +31,7 @@ body#FamilyMap {
margin-left: 10px;
margin-right: 10px;
border: solid 4px #000;
margin: 20px auto;
margin: 0px auto;
width: 800px;
height: 400px;
max-width: 90%;
@@ -64,106 +64,5 @@ div#FamilyMapDetail div#references table.infolist {
width: 100%;
}
div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
width: 70%;
}
/* Subsection: popup
------------------------------------------------------ */
#map_canvas .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: 5px;
border-radius: 8px;
border: 2px solid #111111;
bottom: 8px;
left: -10px;
min-width: 500px;
}
#map_canvas .ol-popup:after, #map_canvas .ol-popup:before {
top: 100%;
border: solid transparent;
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
#map_canvas .ol-popup:after {
border-top-color: white;
border-width: 10px;
left: 48px;
margin-left: -10px;
}
#map_canvas .ol-popup:before {
border-top-color: #cccccc;
border-width: 11px;
left: 48px;
margin-left: -11px;
}
#map_canvas .ol-popup-closer {
text-decoration: none;
position: absolute;
top: 2px;
right: 8px;
}
#map_canvas .ol-popup-title {
background-color: #ededed;
padding: 0 0.5em;
}
#map_canvas .ol-popup-content {
color: #111;
font: bold 0.9em sans-serif;
max-height: 200px;
overflow-y: auto;
padding: 0 0.5em 15px 0.5em;
}
#map_canvas .ol-popup-content a {
color: #111;
}
#map_canvas .ol-popup-content a:visited {
color: green;
}
#map_canvas .ol-popup-content a:hover {
color: red;
}
#map_canvas .ol-popup-closer:after {
content: "✖";
}
#map_canvas .ol-control {
position: absolute;
background-color: rgba(255,255,255,0.1);
bottom: .1em;
left: .1em;
height: 4%;
width: 100%;
margin-top: 1px;
margin-bottom: 1px;
padding-left: 1px;
}
#map_canvas .ol-rotate {
display: none;
}
#map_canvas .ol-zoom, #map_canvas .ol-zoom-in, #map_canvas .ol-zoom-out {
top: .5em;
left: .5em;
border-left-width: 1px;
padding-left: 1px;
padding-right: 1px;
}
#map_canvas .ol-attribution ul {
list-style-type: none;
font-size:0.8em;
float: left;
margin-top: 1px;
margin-bottom: 1px;
padding-left: 5px;
}
#map_canvas .ol-attribution li {
float: left;
padding-left: 5px;
}
#map_canvas .ol-attribution button {
display: none;
width: 40%;
}
+7
View File
@@ -0,0 +1,7 @@
gramps
command=gramps
name=GRAMPS
can_open_multiple_files=false
expects_uris=false
requires_terminal=false
mime_types=application/x-gramps,application/x-gedcom,application/x-gramps-package,application/x-gramps-xml,application/x-geneweb
+5 -5
View File
@@ -1,13 +1,13 @@
[Desktop Entry]
Name=Gramps
GenericName=Genealogy System
X-GNOME-FullName=Gramps Genealogy System
Comment=Manage genealogical information, perform genealogical research and analysis
_Name=Gramps
_GenericName=Genealogy System
_X-GNOME-FullName=Gramps Genealogy System
_Comment=Manage genealogical information, perform genealogical research and analysis
Icon=gramps
Terminal=false
Type=Application
StartupNotify=true
Categories=GTK;Office;
Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
_Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
MimeType=application/x-gramps;application/x-gedcom;application/x-gramps-package;application/x-gramps-xml;
Exec=gramps %F
+54
View File
@@ -0,0 +1,54 @@
application/x-gramps:
_description=Gramps database
default_action_type=application
short_list_application_ids=gramps
short_list_application_ids_for_novice_user_level=gramps
short_list_application_ids_for_intermediate_user_level=gramps
short_list_application_ids_for_advanced_user_level=gramps
category=Documents/Genealogy
icon-filename=/usr/share/gramps/gramps.png
open=gramps %f
application/x-gramps-package:
_description=Gramps package
default_action_type=application
short_list_application_ids=gramps
short_list_application_ids_for_novice_user_level=gramps
short_list_application_ids_for_intermediate_user_level=gramps
short_list_application_ids_for_advanced_user_level=gramps
category=Documents/Genealogy
icon-filename=/usr/share/gramps/gramps.png
open=gramps %f
application/x-gramps-xml:
_description=Gramps XML database
default_action_type=application
short_list_application_ids=gramps
short_list_application_ids_for_novice_user_level=gramps
short_list_application_ids_for_intermediate_user_level=gramps
short_list_application_ids_for_advanced_user_level=gramps
category=Documents/Genealogy
icon-filename=/usr/share/gramps/gramps.png
open=gramps %f
application/x-gedcom:
_description=GEDCOM
default_action_type=application
short_list_application_ids=gramps
short_list_application_ids_for_novice_user_level=gramps
short_list_application_ids_for_intermediate_user_level=gramps
short_list_application_ids_for_advanced_user_level=gramps
category=Documents/Genealogy
icon-filename=/usr/share/gramps/gramps.png
open=gramps %f
application/x-geneweb:
_description=GeneWeb
default_action_type=application
short_list_application_ids=gramps
short_list_application_ids_for_novice_user_level=gramps
short_list_application_ids_for_intermediate_user_level=gramps
short_list_application_ids_for_advanced_user_level=gramps
category=Documents/Genealogy
icon-filename=/usr/share/gramps/gramps.png
open=gramps %f
+14
View File
@@ -0,0 +1,14 @@
application/x-gramps
ext: grdb
application/x-gramps-xml
ext: gramps
application/x-gramps-package
ext: gpkg
application/x-gedcom
ext: ged gedcom GED GEDCOM
application/x-geneweb
ext: gw GW
+1 -1
View File
@@ -251,7 +251,7 @@ PLACES
<!ELEMENT places (placeobj)*>
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
<!ELEMENT placeobj (ptitle?, code?, pname+, coord?, placeref*, location*,
objref*, url*, noteref*, citationref*, tagref*)>
<!ATTLIST placeobj
id CDATA #IMPLIED
+1 -1
View File
@@ -453,10 +453,10 @@
<ref name="primary-object"/>
<attribute name="type"><text/></attribute>
<optional><element name="ptitle"><text/></element></optional>
<optional><element name="code"><text/></element></optional>
<oneOrMore><element name="pname">
<ref name="placename-content"/>
</element></oneOrMore>
<optional><element name="code"><text/></element></optional>
<optional><element name="coord">
<attribute name="long"><text/></attribute>
<attribute name="lat"><text/></attribute>
+131 -144
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<calendar>
<country name="Bulgaria">
<country _name="Bulgaria">
<date name="Нова Година" value="*/1/1" type="national" />
<date name="Освобождение на България от Османско иго" value="*/3/3" type="national" />
<date name="Ден на труда" value="*/5/1" type="national" />
@@ -49,7 +49,7 @@
<date name="Възнесение господне" value="2011/6/2" type="religious" />
<date name="Възнесение господне" value="2012/5/24" type="religious" />
</country>
<country name="Canada">
<country _name="Canada">
<date name="New Year's Day" value="*/1/1" type="national" />
<date name="Groundhog Day" value="*/2/2" type="secular" />
<date name="Valentine's Day" value="*/2/14" type="secular" />
@@ -81,7 +81,22 @@
<date name="Christmas" value="*/12/25" type="national" />
<date name="Boxing Day" value="*/12/26" type="national" />
</country>
<country name="Chile">
<country _name="Czech Republic">
<date name="Nový rok" value="*/1/1" type="national" />
<date name="Den obnovy samostatného českého státu" value="*/1/1" type="national" />
<date name="Velikonoce" type="religious" value="> easter(y)" />
<date name="Svátek práce" value="*/5/1" type="national" />
<date name="Den osvobození od fašismu" value="*/5/8" type="national" />
<date name="Den slovanských věrozvěstů Cyrila a Metoděje" value="*/7/5" type="national" />
<date name="Den upálení mistra Jana Husa" value="*/7/6" type="national" />
<date name="Den české státnosti" value="*/9/28" type="national" />
<date name="Den vzniku samostatného československého státu" value="*/10/28" type="national" />
<date name="Den boje za svobodu a demokracii" value="*/11/17" type="national" />
<date name="Štědrý den" value="*/12/24" type="religious" />
<date name="1. svátek vánoční" value="*/12/25" type="national" />
<date name="2. svátek vánoční" value="*/12/26" type="national" />
</country>
<country _name="Chile">
<date name="Año nuevo" value="*/1/1" type="national" />
<date name="Viernes Santo" value="2007/4/6" type="religious" />
<date name="Viernes Santo" value="2008/3/21" type="religious" />
@@ -104,10 +119,10 @@
<date name="Inmaculada Concepción" value="*/12/8" type="religious" />
<date name="Navidad" value="*/12/25" type="national" />
</country>
<country name="China">
<country _name="China">
<date name="Chinese New Year" value="2006/1/29" type="national" />
</country>
<country name="Croatia">
<country _name="Croatia">
<date name="Nova godina" value="*/1/1" type="national" />
<date name="Sveta tri kralja" value="*/1/6" type="national" />
<date name="Uskrs" value="> easter(y)" type="national" />
@@ -123,22 +138,7 @@
<date name="Božić" value="*/12/25" type="national" />
<date name="Sveti Stjepan" value="*/12/26" type="national" />
</country>
<country name="Czech Republic">
<date name="Nový rok" value="*/1/1" type="national" />
<date name="Den obnovy samostatného českého státu" value="*/1/1" type="national" />
<date name="Velikonoce" type="religious" value="> easter(y)" />
<date name="Svátek práce" value="*/5/1" type="national" />
<date name="Den osvobození od fašismu" value="*/5/8" type="national" />
<date name="Den slovanských věrozvěstů Cyrila a Metoděje" value="*/7/5" type="national" />
<date name="Den upálení mistra Jana Husa" value="*/7/6" type="national" />
<date name="Den české státnosti" value="*/9/28" type="national" />
<date name="Den vzniku samostatného československého státu" value="*/10/28" type="national" />
<date name="Den boje za svobodu a demokracii" value="*/11/17" type="national" />
<date name="Štědrý den" value="*/12/24" type="religious" />
<date name="1. svátek vánoční" value="*/12/25" type="national" />
<date name="2. svátek vánoční" value="*/12/26" type="national" />
</country>
<country name="England">
<country _name="England">
<date name="New Year's Day" value="*/1/1" type="national" />
<date name="Bank Holiday" value="*/1/1" offset="+1" if="dow(y, m, d) == 7" type="national" />
<date name="Bank Holiday" value="*/1/1" offset="+2" if="dow(y, m, d) == 6" type="national" />
@@ -168,7 +168,7 @@
<date name="Armistice Day" value="*/11/11" type="secular" />
<date name="Remembrance Sunday" value="*/2/sun/nov" type="secular" />
</country>
<country name="Finland">
<country _name="Finland">
<date name="Loppiainen" value="*/1/6" type="religious" if="not(y>=1973)" />
<date name="Loppiainen" value="*/1/6" offset="sat" type="religious" if="(y>=1973) and not(y>=1992)" />
<date name="Loppiainen" value="*/1/6" type="religious" if="(y>=1992)" />
@@ -262,7 +262,7 @@
<date name="Jean Sibeliuksen päivä" value="*/12/8" type="national" if="(y>=2011)" />
<date name="Uudenvuodenaatto" value="*/12/31" type="national" if="(y>=1846)" />
</country>
<country name="France">
<country _name="France">
<date name="Jour de l'an" value="*/1/1" type="national" />
<date name="Fête du travail" value="*/5/1" type="national" />
<date name="Victoire 1945" value="*/5/8" type="national" />
@@ -298,7 +298,7 @@
<date name="début Ramadan" value="2016/06/08" type="religious" />
<date name="Saint Étienne (Alsace/Moselle)" value="*/12/26" type="religious" />
</country>
<country name="Germany">
<country _name="Germany">
<date name="Neujahr" type="national" value="*/1/1" />
<date name="Hl. Drei Könige BW,BY,ST" type="religious" value="*/1/6" />
<date name="Karfreitag" type="religious" value="> easter(y)" offset="-2" />
@@ -315,7 +315,7 @@
<date name="1. Weihnachtsfeiertag" type="religious" value="*/12/25" />
<date name="2. Weihnachtsfeiertag" type="religious" value="*/12/26" />
</country>
<country name="Japan">
<country _name="Japan">
<date name="元日" value="*/1/1" />
<date name="成人の日" value="*/2/mon/jan" />
<date name="建国記念の日" value="*/2/11" />
@@ -338,96 +338,7 @@
<date name="天皇(明仁)即位記念" value="1990/11/12" />
<date name="皇太子徳仁親王の結婚" value="1993/6/9" />
</country>
<country name="Jewish Holidays">
<date name="Purim" value="> passover(y)" offset="-30"/>
<date name="Passover" value="> passover(y)" offset="0"/>
<date name="2 of Passover" value="> passover(y)" offset="1"/>
<date name="3 of Passover" value="> passover(y)" offset="2"/>
<date name="4 of Passover" value="> passover(y)" offset="3"/>
<date name="5 of Passover" value="> passover(y)" offset="4"/>
<date name="6 of Passover" value="> passover(y)" offset="5"/>
<date name="7 of Passover" value="> passover(y)" offset="6"/>
<date name="Shavuot" value="> passover(y)" offset="50"/>
<date name="Rosh Ha'Shana" value="> passover(y)" offset="163"/>
<date name="Rosh Ha'Shana 2" value="> passover(y)" offset="164"/>
<date name="Yom Kippur" value="> passover(y)" offset="172"/>
<date name="Sukot" value="> passover(y)" offset="177"/>
<date name="2 of Sukot" value="> passover(y)" offset="178"/>
<date name="3 of Sukot" value="> passover(y)" offset="179"/>
<date name="4 of Sukot" value="> passover(y)" offset="180"/>
<date name="5 of Sukot" value="> passover(y)" offset="181"/>
<date name="6 of Sukot" value="> passover(y)" offset="182"/>
<date name="7 of Sukot" value="> passover(y)" offset="183"/>
<date name="Simhat Tora" value="> passover(y)" offset="184"/>
<date name="Hanuka" value="> hanuka(y)" offset="0"/>
<date name="2 of Hanuka" value="> hanuka(y)" offset="1"/>
<date name="3 of Hanuka" value="> hanuka(y)" offset="2"/>
<date name="4 of Hanuka" value="> hanuka(y)" offset="3"/>
<date name="5 of Hanuka" value="> hanuka(y)" offset="4"/>
<date name="6 of Hanuka" value="> hanuka(y)" offset="5"/>
<date name="7 of Hanuka" value="> hanuka(y)" offset="6"/>
<date name="8 of Hanuka" value="> hanuka(y)" offset="7"/>
</country>
<country name="New Zealand">
<date value="*/1/1" type="national" name="New Year's Day"/>
<date value="*/1/2" type="national" name="Day After New Year's Day"/>
<date value="*/1/1" type="national" offset="+1" name="New Years Day Holiday" if="dow(y, m, d) == 7"/>
<date value="*/1/1" type="national" offset="+2" name="Day After New Years Day Holiday" if="dow(y, m, d) == 6"/>
<date value="*/feb/6" type="national" name="Waitangi Day"/>
<date value="> easter(y)" type="national" offset="-2" name="Good Friday"/>
<date value="> easter(y)" type="national" offset="+1" name="Easter Monday"/>
<date value="*/apr/25" type="national" name="ANZAC Day"/>
<date value="*/-1/mon/jun" type="national" name="Queen's Birthday Holiday"/>
<date value="*/-4/mon/oct" type="national" name="Labour Day"/>
<date value="*/dec/25" type="national" name="Christmas Day"/>
<date value="*/dec/26" type="national" name="Boxing Day"/>
<date value="*/dec/25" type="national" offset="+2" name="Christmas Day Holiday" if="dow(y, m, d) > 5"/>
<date value="*/dec/26" type="national" offset="+2" name="Boxing Day Holiday" if="dow(y, m, d) > 5"/>
</country>
<country name="Russia">
<date value="*/1/7" type="religious" name="Рождество Христово" />
<date value="*/1/19" type="religious" name="Крещение Господне" />
<date value="*/2/23" type="national" name="День защитника" />
<date value="*/3/8" type="national" name="Международный женский день" />
<date value="*/5/1" type="national" name="День труда" />
<date value="*/5/9" type="national" name="День Победы" />
<date value="*/6/1" type="national" name="День защиты детей" />
<date value="*/6/12" type="national" name="День России" />
<date value="*/9/1" type="national" name="День знаний" />
<date value="*/11/4" type="national" name="День народного единства" />
<date value="*/12/31" offset="+2" type="national" name="Новый год" />
</country>
<country name="Serbia">
<date value="*/1/1" type="national" name="Нова Година" />
<date value="*/1/7" type="religious" name="Божић" />
<date value="*/2/15" type="national" name="Дан државности Србије" />
<date value="> julian_easter(y)" type="religious" offset="-2" name="Велики петак" />
<date value="> julian_easter(y)" type="religious" name="Васкрс" />
<date value="> julian_easter(y)" type="religious" offset="1" name="Васкрсни понедељак" />
<date value="*/5/1" type="national" name="Празник рада" />
<date value="*/11/11" type="national" name="Дан примирја" />
<date value="*/1/27" type="religious" name="Свети Сава" />
<date value="*/4/22" type="national" name="Дан сећања на жртве холокауста" />
<date value="*/5/9" type="national" name="Дан победе" />
<date value="*/6/28" type="religious" name="Видовдан" />
<date value="*/10/21" type="national" name="Дан сећања на српске жртве у Другом светском рату" />
</country>
<country name="Serbia (Latin)">
<date value="*/1/1" type="national" name="Nova godina" />
<date value="*/1/7" type="religious" name="Božić" />
<date value="*/2/15" type="national" name="Dan državnosti Srbije" />
<date value="> julian_easter(y)" type="religious" offset="-2" name="Veliki petak" />
<date value="> julian_easter(y)" type="religious" name="Vaskrs" />
<date value="> julian_easter(y)" type="religious" offset="1" name="Vaskrsni ponedeljak" />
<date value="*/5/1" type="national" name="Praznik rada" />
<date value="*/11/11" type="national" name="Dan primirja" />
<date value="*/1/27" type="religious" name="Sveti Sava" />
<date value="*/4/22" type="national" name="Dan sećanja na žrtve holokausta" />
<date value="*/5/9" type="national" name="Dan pobede" />
<date value="*/6/28" type="religious" name="Vidovdan" />
<date value="*/10/21" type="national" name="Dan sećanja na srpske žrtve u Drugom svetskom ratu" />
</country>
<country name="Slovakia">
<country _name="Slovakia">
<date name="Deň vzniku Slovenskej republiky" value="*/1/1" type="national" />
<date name="Zjavenie Pána (Traja králi)" value="*/1/6" type="religious" />
<date name="Veľký piatok" value="> easter(y)" offset="-2" type="religious" />
@@ -444,7 +355,7 @@
<date name="Prvý sviatok vianočný" value="*/12/25" type="national" />
<date name="Druhý sviatok vianočný" value="*/12/26" type="national" />
</country>
<country name="Sweden">
<country _name="Sweden">
<date name="Nyårsafton" value="*/12/31" type="national" />
<date name="Trettondedag jul" value="*/1/6" type="religious" />
<date name="Alla helgons dag" value="*/oct/31" offset="sat" type="religious" if="(y>=1953)" />
@@ -471,34 +382,7 @@
<date name="Midsommardagen" value="*/jun/24" type="religious" if="not(y>=1953)" />
<date name="Fars dag" value="*/2/sun/nov" type="national" />
</country>
<country name="Ukraine">
<date value="*/1/1" type="national" name="Новий Рік"/>
<date value="*/1/6" type="religious" name="Святий Вечір"/>
<date value="*/1/7" type="religious" name="Різдво"/>
<date value="*/1/13" type="religious" name="Маланка"/>
<date value="*/1/14" type="religious" name="Старий Новий рік, Щедрий вечір"/>
<date value="*/1/19" type="religious" name="Водохреща"/>
<date value="*/1/22" type="national" name="День Соборності України"/>
<date value="*/2/14" type="secular" name="День закоханих"/>
<date value="*/2/15" type="religious" name="Стрітення"/>
<date value="*/3/8" type="secular" name="Міжнародний жіночий день"/>
<date value="*/3/20" type="secular" name="Весняне Рівнодення"/>
<date value="*/4/1" type="secular" name="День сміху"/>
<date value="*/4/7" type="religious" name="Благовіщення"/>
<date value="> julian_easter(y)" type="religious" name="Великдень"/>
<date value="*/5/1" type="national" name="День Праці"/>
<date value="*/6/21" type="secular" name="Весняне Сонцестояння"/>
<date value="*/6/28" type="national" name="День Конституції України"/>
<date value="*/7/7" type="religious" name="Івана Купала"/>
<date value="*/8/19" type="religious" name="Спаса"/>
<date value="*/8/24" type="national" name="День Незалежності України"/>
<date value="*/9/22" type="secular" name="Осіннє Рівнодення"/>
<date value="*/10/14" type="religious" name="Покрова, День Українського козацтва"/>
<date value="*/12/13" type="religious" name="Андрія"/>
<date value="*/12/19" type="religious" name="Миколая"/>
<date value="*/12/21" type="secular" name="Осіннє Сонцестояння"/>
</country>
<country name="United States of America">
<country _name="United States of America">
<date name="New Year's Eve" value="*/12/31" type="national" />
<date name="New Year's Day" value="*/1/1" type="national" />
<date name="ML Kings's Birthday" value="*/3/mon/jan" type="secular" />
@@ -548,4 +432,107 @@
<date name="Christmas" value="*/12/25" type="religious" />
<date name="Kwanzaa begins" value="*/12/26" type="religious" />
</country>
<country _name="Jewish Holidays">
<date _name="Purim" value="> passover(y)" offset="-30"/>
<date _name="Passover" value="> passover(y)" offset="0"/>
<date _name="2 of Passover" value="> passover(y)" offset="1"/>
<date _name="3 of Passover" value="> passover(y)" offset="2"/>
<date _name="4 of Passover" value="> passover(y)" offset="3"/>
<date _name="5 of Passover" value="> passover(y)" offset="4"/>
<date _name="6 of Passover" value="> passover(y)" offset="5"/>
<date _name="7 of Passover" value="> passover(y)" offset="6"/>
<date _name="Shavuot" value="> passover(y)" offset="50"/>
<date _name="Rosh Ha'Shana" value="> passover(y)" offset="163"/>
<date _name="Rosh Ha'Shana 2" value="> passover(y)" offset="164"/>
<date _name="Yom Kippur" value="> passover(y)" offset="172"/>
<date _name="Sukot" value="> passover(y)" offset="177"/>
<date _name="2 of Sukot" value="> passover(y)" offset="178"/>
<date _name="3 of Sukot" value="> passover(y)" offset="179"/>
<date _name="4 of Sukot" value="> passover(y)" offset="180"/>
<date _name="5 of Sukot" value="> passover(y)" offset="181"/>
<date _name="6 of Sukot" value="> passover(y)" offset="182"/>
<date _name="7 of Sukot" value="> passover(y)" offset="183"/>
<date _name="Simhat Tora" value="> passover(y)" offset="184"/>
<date _name="Hanuka" value="> hanuka(y)" offset="0"/>
<date _name="2 of Hanuka" value="> hanuka(y)" offset="1"/>
<date _name="3 of Hanuka" value="> hanuka(y)" offset="2"/>
<date _name="4 of Hanuka" value="> hanuka(y)" offset="3"/>
<date _name="5 of Hanuka" value="> hanuka(y)" offset="4"/>
<date _name="6 of Hanuka" value="> hanuka(y)" offset="5"/>
<date _name="7 of Hanuka" value="> hanuka(y)" offset="6"/>
<date _name="8 of Hanuka" value="> hanuka(y)" offset="7"/>
</country>
<country _name="New Zealand">
<date value="*/1/1" type="national" name="New Year's Day"/>
<date value="*/1/2" type="national" name="Day After New Year's Day"/>
<date value="*/1/1" type="national" offset="+1" name="New Years Day Holiday" if="dow(y, m, d) == 7"/>
<date value="*/1/1" type="national" offset="+2" name="Day After New Years Day Holiday" if="dow(y, m, d) == 6"/>
<date value="*/feb/6" type="national" name="Waitangi Day"/>
<date value="> easter(y)" type="national" offset="-2" name="Good Friday"/>
<date value="> easter(y)" type="national" offset="+1" name="Easter Monday"/>
<date value="*/apr/25" type="national" name="ANZAC Day"/>
<date value="*/-1/mon/jun" type="national" name="Queen's Birthday Holiday"/>
<date value="*/-4/mon/oct" type="national" name="Labour Day"/>
<date value="*/dec/25" type="national" name="Christmas Day"/>
<date value="*/dec/26" type="national" name="Boxing Day"/>
<date value="*/dec/25" type="national" offset="+2" name="Christmas Day Holiday" if="dow(y, m, d) > 5"/>
<date value="*/dec/26" type="national" offset="+2" name="Boxing Day Holiday" if="dow(y, m, d) > 5"/>
</country>
<country _name="Ukraine">
<date value="*/1/1" type="national" name="Новий Рік"/>
<date value="*/1/6" type="religious" name="Святий Вечір"/>
<date value="*/1/7" type="religious" name="Різдво"/>
<date value="*/1/13" type="religious" name="Маланка"/>
<date value="*/1/14" type="religious" name="Старий Новий рік, Щедрий вечір"/>
<date value="*/1/19" type="religious" name="Водохреща"/>
<date value="*/1/22" type="national" name="День Соборності України"/>
<date value="*/2/14" type="secular" name="День закоханих"/>
<date value="*/2/15" type="religious" name="Стрітення"/>
<date value="*/3/8" type="secular" name="Міжнародний жіночий день"/>
<date value="*/3/20" type="secular" name="Весняне Рівнодення"/>
<date value="*/4/1" type="secular" name="День сміху"/>
<date value="*/4/7" type="religious" name="Благовіщення"/>
<date value="> julian_easter(y)" type="religious" name="Великдень"/>
<date value="*/5/1" type="national" name="День Праці"/>
<date value="*/6/21" type="secular" name="Весняне Сонцестояння"/>
<date value="*/6/28" type="national" name="День Конституції України"/>
<date value="*/7/7" type="religious" name="Івана Купала"/>
<date value="*/8/19" type="religious" name="Спаса"/>
<date value="*/8/24" type="national" name="День Незалежності України"/>
<date value="*/9/22" type="secular" name="Осіннє Рівнодення"/>
<date value="*/10/14" type="religious" name="Покрова, День Українського козацтва"/>
<date value="*/12/13" type="religious" name="Андрія"/>
<date value="*/12/19" type="religious" name="Миколая"/>
<date value="*/12/21" type="secular" name="Осіннє Сонцестояння"/>
</country>
<country _name="Serbia">
<date value="*/1/1" type="national" name="Нова Година" />
<date value="*/1/7" type="religious" name="Божић" />
<date value="*/2/15" type="national" name="Дан државности Србије" />
<date value="> julian_easter(y)" type="religious" offset="-2" name="Велики петак" />
<date value="> julian_easter(y)" type="religious" name="Васкрс" />
<date value="> julian_easter(y)" type="religious" offset="1" name="Васкрсни понедељак" />
<date value="*/5/1" type="national" name="Празник рада" />
<date value="*/11/11" type="national" name="Дан примирја" />
<date value="*/1/27" type="religious" name="Свети Сава" />
<date value="*/4/22" type="national" name="Дан сећања на жртве холокауста" />
<date value="*/5/9" type="national" name="Дан победе" />
<date value="*/6/28" type="religious" name="Видовдан" />
<date value="*/10/21" type="national" name="Дан сећања на српске жртве у Другом светском рату" />
</country>
<country _name="Serbia (Latin)">
<date value="*/1/1" type="national" name="Nova godina" />
<date value="*/1/7" type="religious" name="Božić" />
<date value="*/2/15" type="national" name="Dan državnosti Srbije" />
<date value="> julian_easter(y)" type="religious" offset="-2" name="Veliki petak" />
<date value="> julian_easter(y)" type="religious" name="Vaskrs" />
<date value="> julian_easter(y)" type="religious" offset="1" name="Vaskrsni ponedeljak" />
<date value="*/5/1" type="national" name="Praznik rada" />
<date value="*/11/11" type="national" name="Dan primirja" />
<date value="*/1/27" type="religious" name="Sveti Sava" />
<date value="*/4/22" type="national" name="Dan sećanja na žrtve holokausta" />
<date value="*/5/9" type="national" name="Dan pobede" />
<date value="*/6/28" type="religious" name="Vidovdan" />
<date value="*/10/21" type="national" name="Dan sećanja na srpske žrtve u Drugom svetskom ratu" />
</country>
</calendar>
-130
View File
@@ -1,130 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<tips>
<tip number="1"><b>Working with Dates</b><br/>A range of dates can be given by using the format &quot;between January 4, 2000 and March 20, 2003&quot;. You can also indicate the level of confidence in a date and even choose between seven different calendars. Try the button next to the date field in the Events Editor.</tip>
<tip number="2"><b>Editing Objects</b><br/>In most cases double clicking on a name, source, place or media entry will bring up a window to allow you to edit the object. Note that the result can be dependent on context. For example, in the Family View clicking on a parent or child will bring up the Relationship Editor.</tip>
<tip number="3"><b>Adding Images</b><br/>An image can be added to any gallery or the Media View by dragging and dropping it from a file manager or a web browser. Actually you can add any type of file like this, useful for scans of documents and other digital sources.</tip>
<tip number="4"><b>Ordering Children in a Family</b><br/>The birth order of children in a family can be set by using drag and drop. This order is preserved even when they do not have birth dates.</tip>
<tip number="5"><b>Talk to Relatives Before It Is Too Late</b><br/>Your oldest relatives can be your most important source of information. They usually know things about the family that haven't been written down. They might tell you nuggets about people that may one day lead to a new avenue of research. At the very least, you will get to hear some great stories. Don't forget to record the conversations!</tip>
<tip number="7"><b>Filtering People</b><br/>In the People View, you can 'filter' individuals based on many criteria. To define a new filter go to &quot;Edit &gt; Person Filter Editor&quot;. There you can name your filter and add and combine rules using the many preset rules. For example, you can define a filter to find all adopted people in the family tree. People without a birth date mentioned can also be filtered. To get the results save your filter and select it at the bottom of the Filter Sidebar, then click Apply. If the Filter Sidebar is not visible, select View &gt; Filter.</tip>
<tip number="8"><b>Inverted Filtering</b><br/>Filters can easily be reversed by using the 'invert' option. For instance, by inverting the 'People with children' filter you can select all people without children.</tip>
<tip number="9"><b>Locating People</b><br/>By default, each surname in the People View is listed only once. By clicking on the arrow to the left of a name, the list will expand to show all individuals with that last name. To locate any Family Name from a long list, select a Family Name (not a person) and start typing. The view will jump to the first Family Name matching the letters you enter.</tip>
<tip number="10"><b>The Family View</b><br/>The Family View is used to display a typical family unit as two parents and their children.</tip>
<tip number="11"><b>Changing the Active Person</b><br/>Changing the Active Person in views is easy. In the Relationship view just click on anyone. In the Ancestry View doubleclick on the person or right click to select any of their spouses, siblings, children or parents.</tip>
<tip number="12"><b>Who Was Born When?</b><br/>Under &quot;Tools &gt; Analysis and exploration &gt; Compare Individual Events...&quot; you can compare the data of individuals in your database. This is useful, say, if you wish to list the birth dates of everyone in your database. You can use a custom filter to narrow the results.</tip>
<tip number="13"><b>Gramps Tools</b><br/>Gramps comes with a rich set of tools. These allow you to undertake operations such as checking the database for errors and consistency. There are research and analysis tools such as event comparison, finding duplicate people, interactive descendant browser, and many others. All tools can be accessed through the &quot;Tools&quot; menu.</tip>
<tip number="14"><b>Calculating Relationships</b><br/>To check if two people in the database are related (by blood, not marriage) try the tool under &quot;Tools &gt; Utilities &gt; Relationship Calculator...&quot;. The exact relationship as well as all common ancestors are reported.</tip>
<tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx Gramplet takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To view the SoundEx codes for surnames in your database, add the SoundEx Gramplet.</tip>
<tip number="16"><b>Setting Your Preferences</b><br/>&quot;Edit &gt; Preferences...&quot; lets you modify a number of settings, such as the path to your media files, and allows you to adjust many aspects of the Gramps presentation to your needs. Each separate view can also be configured under &quot;View &gt; Configure View...&quot;</tip>
<tip number="17"><b>Gramps Reports</b><br/>Gramps offers a wide variety of reports. The Graphical Reports and Graphs can present complex relationships easily and the Text Reports are particularly useful if you want to send the results of your family tree to members of the family via email. If you're ready to make a website for your family tree then there's a report for that as well.</tip>
<tip number="18"><b>Starting a New Family Tree</b><br/>A good way to start a new family tree is to enter all the members of the family into the database using the Person View (use &quot;Edit &gt; Add...&quot; or click on the Add a new person button from the People View). Then go to the Relationship View and create relationships between people.</tip>
<tip number="19"><b>What's That For?</b><br/>Unsure what a button does? Simply hold the mouse over a button and a tooltip will appear.</tip>
<tip number="20"><b>Unsure of a Date?</b><br/>If you're unsure about the date an event occurred, Gramps allows you to enter a wide range of date formats based on a guess or an estimate. For instance, &quot;about 1908&quot; is a valid entry for a birth date in Gramps. Click the Date button next to the date field and see the Gramps Manual to learn more.</tip>
<tip number="21"><b>Duplicate Entries</b><br/>&quot;Tools &gt; Database Processing &gt; Find Possible Duplicate People...&quot; allows you to locate (and merge) entries of the same person entered more than once in the database.</tip>
<tip number="22"><b>Merging Entries</b><br/>The function &quot;Edit &gt; Compare and Merge...&quot; allows you to combine separately listed people into one. Select the second entry by holding the Control key as you click. This is very useful for combining two databases with overlapping people, or combining erroneously entered differing names for one individual. This also works for the Places, Sources and Repositories views.</tip>
<tip number="23"><b>Organising the Views</b><br/>Many of the views can present your data as either a hierarchical tree or as a simple list. Each view can also be configured to the way you like it. Have a look to the right of the top toolbar or under the &quot;View&quot; menu.</tip>
<tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People and Events. You can move forward and backward through the list using &quot;Go &gt; Forward&quot; and &quot;Go &gt; Back&quot; or the arrow buttons.</tip>
<tip number="25"><b>Keyboard Shortcuts</b><br/>Tired of having to take your hand off the keyboard to use the mouse? Many functions in Gramps have keyboard shortcuts. If one exists for a function it is displayed on the right side of the menu.</tip>
<tip number="26"><b>Read the Manual</b><br/>Don't forget to read the Gramps manual, &quot;Help &gt; User Manual&quot;. The developers have worked hard to make most operations intuitive but the manual is full of information that will make your time spent on genealogy more productive.</tip>
<tip number="27"><b>Adding Children</b><br/>To add children in Gramps there are two options. You can find one of their parents in the Families View and open the family. Then choose to create a new person or add an existing person. You can also add children (or siblings) from inside the Family Editor.</tip>
<tip number="28"><b>Editing the Parent-Child Relationship</b><br/> You can edit the relationship of a child to its parents by double clicking the child in the Family Editor. Relationships can be any of Adopted, Birth, Foster, None, Sponsored, Stepchild and Unknown.</tip>
<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 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 &quot;Help &gt; Gramps Mailing Lists&quot;.</tip>
<tip number="33"><b>Contributing to Gramps</b><br/>Want to help with Gramps but can't write programs? Not a problem! A project as large as Gramps requires people with a wide variety of skills. Contributions can be anything from writing documentation to testing development versions and helping with the web site. Start by subscribing to the Gramps developers mailing list, gramps-devel, and introducing yourself. Subscription information can be found at &quot;Help &gt; Gramps Mailing Lists&quot;</tip>
<tip number="34"><b>So What's in a Name?</b><br/>The name Gramps was suggested to the original developer, Don Allingham, by his father. It stands for <i>Genealogical Research and Analysis Management Program System</i>. It is a full-featured genealogy program letting you store, edit, and research genealogical data. The Gramps database back end is so robust that some users are managing genealogies containing hundreds of thousands of people.</tip>
<tip number="36"><b>Bookmarking Individuals</b><br/>The Bookmarks menu is a convenient place to store the names of frequently used individuals. Selecting a bookmark will make that person the Active Person. To bookmark someone make them the Active Person then go to &quot;Bookmarks &gt; Add Bookmark&quot; or press Ctrl+D. You can also bookmark most of the other objects.</tip>
<tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a either a reddish background or a red dot on the right edge of the field. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under &quot;Edit &gt; Preferences &gt; Display&quot;.</tip>
<tip number="38"><b>Listing Events</b><br/>Events are added using the editor opened with &quot;Person &gt; Edit Person &gt; Events&quot;. There is a long list of preset event types. You can add your own event types by typing in the text field, they will be added to the available events, but not translated.</tip>
<tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the preferred name by dragging it to the Preferred Name section.</tip>
<tip number="40"><b>Ancestor View</b><br/>The Ancestry View displays a traditional pedigree chart. Hold the mouse over an individual to see more information about them or right click on an individual to access other family members and settings. Play with the settings to see the different options.</tip>
<tip number="41"><b>Managing Sources</b><br/>The Sources View shows a list of all sources in a single window. From here you can edit your sources, merge duplicates and see which individuals reference each source. You can use filters to group your sources.</tip>
<tip number="42"><b>Managing Places</b><br/>The Places View shows a list of all places in the database. The list can be sorted by a number of different criteria, such as City, County or State.</tip>
<tip number="43"><b>Media View</b><br/>The Media View shows a list of all media entered in the database. These can be graphic images, videos, sound clips, spreadsheets, documents, and more.</tip>
<tip number="44"><b>Filters</b><br/>Filters allow you to limit the people seen in the People View. In addition to the many preset filters, Custom Filters can be created limited only by your imagination. Custom filters are created from &quot;Edit &gt; Person Filter Editor&quot;.</tip>
<tip number="45"><b>The GEDCOM File Format</b><br/>Gramps allows you to import from, and export to, the GEDCOM format. There is extensive support for the industry standard GEDCOM version 5.5, so you can exchange Gramps information to and from users of most other genealogy programs. Filters exist that make importing and exporting GEDCOM files trivial.</tip>
<tip number="46"><b>The Gramps XML Package</b><br/>You can export your Family Tree as a Gramps XML Package. This is a compressed file containing your family tree data and all the media files connected to the database (images for example). This file is completely portable so is useful for backups or sharing with other Gramps users. This format has the key advantage over GEDCOM that no information is ever lost when exporting and importing.</tip>
<tip number="48"><b>Web Family Tree Format</b><br/>Gramps can export data to the Web Family Tree (WFT) format. This format allows a family tree to be displayed online using a single file, instead of many html files.</tip>
<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 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>
<tip number="53"><b>Privacy in Gramps</b><br/>Gramps helps you to keep personal information secure by allowing you to mark information as private. Data marked as private can be excluded from reports and data exports. Look for the padlock which toggles records between private and public.</tip>
<tip number="54"><b>Keeping Good Records</b><br/>Be accurate when recording genealogical information. Don't make assumptions while recording primary information; write it exactly as you see it. Use bracketed comments to indicate your additions, deletions or comments. Use of the Latin 'sic' is recommended to confirm the accurate transcription of what appears to be an error in a source.</tip>
<tip number="57"><b>Extra Reports and Tools</b><br/>Extra tools and reports can be added to Gramps with the &quot;Addon&quot; system. See them under &quot;Help &gt; Extra Reports/Tools&quot;. This is the best way for advanced users to experiment and create new functionality.</tip>
<tip number="58"><b>Book Reports</b><br/>The Book report under &quot;Reports &gt; Books &gt; Book Report...&quot;, allows you to collect a variety of reports into a single document. This single report is easier to distribute than multiple reports, especially when printed.</tip>
<tip number="59"><b>Gramps Announcements</b><br/>Interested in getting notified when a new version of Gramps is released? Join the Gramps-announce mailing list at &quot;Help &gt; Gramps Mailing Lists&quot;</tip>
<tip number="60"><b>Record Your Sources</b><br/>Information collected about your family is only as good as the source it came from. Take the time and trouble to record all the details of where the information came from. Whenever possible get a copy of original documents.</tip>
<tip number="61"><b>Directing Your Research</b><br/>Go from what you know to what you do not. Always record everything that is known before making conjectures. Often the facts at hand suggest plenty of direction for more research. Don't waste time looking through thousands of records hoping for a trail when you have other unexplored leads.</tip>
<tip number="62"><b>The 'How and Why' of Your Genealogy</b><br/> Genealogy isn't only about dates and names. It is about people. Be descriptive. Include why things happened, and how descendants might have been shaped by the events they went through. Narratives go a long way in making your family history come alive.</tip>
<tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 40 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</tip>
<tip number="64"><b>Gramps Translators</b><br/>Gramps has been designed so that new translations can easily be added with little development effort. If you are interested in participating please email gramps-devel@lists.sf.net</tip>
<tip number="66"><b>Hello, привет or 喂</b><br/>Whatever script you use Gramps offers full Unicode support. Characters for all languages are properly displayed.</tip>
<tip number="67"><b>The Home Person</b><br/>Anyone can be chosen as the Home Person in Gramps. Use &quot;Edit &gt; Set Home Person&quot; in the Person View. The home person is the person who is selected when the database is opened or when the home button is pressed.</tip>
<tip number="70"><b>The Gramps Code</b><br/>Gramps is written in a computer language called Python using the GTK and GNOME libraries for the graphical interface. Gramps is supported on any computer system where these programs have been ported. Gramps is known to be run on Linux, BSD, Solaris, Windows and Mac OS X.</tip>
<tip number="71"><b>Open Source Software</b><br/>The Free/Libre and Open Source Software (FLOSS) development model means Gramps can be extended by any programmer since all of the source code is freely available under its license. So it's not just about free beer, it's also about freedom to study and change the tool. For more about Open Source software lookup the Free Software Foundation and the Open Source Initiative.</tip>
<tip number="72"><b>The Gramps Software License</b><br/>You are free to use and share Gramps with others. Gramps is freely distributable under the GNU General Public License, see http://www.gnu.org/licenses/licenses.html#GPL to read about the rights and restrictions of this license.</tip>
<tip number="73"><b>Gramps for Gnome or KDE?</b><br/>For Linux users Gramps works with whichever desktop environment you prefer. As long as the required GTK libraries are installed it will run fine.</tip>
</tips>
+130
View File
@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<tips>
<_tip number="1"><b>Working with Dates</b><br/>A range of dates can be given by using the format &quot;between January 4, 2000 and March 20, 2003&quot;. You can also indicate the level of confidence in a date and even choose between seven different calendars. Try the button next to the date field in the Events Editor.</_tip>
<_tip number="2"><b>Editing Objects</b><br/>In most cases double clicking on a name, source, place or media entry will bring up a window to allow you to edit the object. Note that the result can be dependent on context. For example, in the Family View clicking on a parent or child will bring up the Relationship Editor.</_tip>
<_tip number="3"><b>Adding Images</b><br/>An image can be added to any gallery or the Media View by dragging and dropping it from a file manager or a web browser. Actually you can add any type of file like this, useful for scans of documents and other digital sources.</_tip>
<_tip number="4"><b>Ordering Children in a Family</b><br/>The birth order of children in a family can be set by using drag and drop. This order is preserved even when they do not have birth dates.</_tip>
<_tip number="5"><b>Talk to Relatives Before It Is Too Late</b><br/>Your oldest relatives can be your most important source of information. They usually know things about the family that haven't been written down. They might tell you nuggets about people that may one day lead to a new avenue of research. At the very least, you will get to hear some great stories. Don't forget to record the conversations!</_tip>
<_tip number="7"><b>Filtering People</b><br/>In the People View, you can 'filter' individuals based on many criteria. To define a new filter go to &quot;Edit &gt; Person Filter Editor&quot;. There you can name your filter and add and combine rules using the many preset rules. For example, you can define a filter to find all adopted people in the family tree. People without a birth date mentioned can also be filtered. To get the results save your filter and select it at the bottom of the Filter Sidebar, then click Apply. If the Filter Sidebar is not visible, select View &gt; Filter.</_tip>
<_tip number="8"><b>Inverted Filtering</b><br/>Filters can easily be reversed by using the 'invert' option. For instance, by inverting the 'People with children' filter you can select all people without children.</_tip>
<_tip number="9"><b>Locating People</b><br/>By default, each surname in the People View is listed only once. By clicking on the arrow to the left of a name, the list will expand to show all individuals with that last name. To locate any Family Name from a long list, select a Family Name (not a person) and start typing. The view will jump to the first Family Name matching the letters you enter.</_tip>
<_tip number="10"><b>The Family View</b><br/>The Family View is used to display a typical family unit as two parents and their children.</_tip>
<_tip number="11"><b>Changing the Active Person</b><br/>Changing the Active Person in views is easy. In the Relationship view just click on anyone. In the Ancestry View doubleclick on the person or right click to select any of their spouses, siblings, children or parents.</_tip>
<_tip number="12"><b>Who Was Born When?</b><br/>Under &quot;Tools &gt; Analysis and exploration &gt; Compare Individual Events...&quot; you can compare the data of individuals in your database. This is useful, say, if you wish to list the birth dates of everyone in your database. You can use a custom filter to narrow the results.</_tip>
<_tip number="13"><b>Gramps Tools</b><br/>Gramps comes with a rich set of tools. These allow you to undertake operations such as checking the database for errors and consistency. There are research and analysis tools such as event comparison, finding duplicate people, interactive descendant browser, and many others. All tools can be accessed through the &quot;Tools&quot; menu.</_tip>
<_tip number="14"><b>Calculating Relationships</b><br/>To check if two people in the database are related (by blood, not marriage) try the tool under &quot;Tools &gt; Utilities &gt; Relationship Calculator...&quot;. The exact relationship as well as all common ancestors are reported.</_tip>
<_tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx Gramplet takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To view the SoundEx codes for surnames in your database, add the SoundEx Gramplet.</_tip>
<_tip number="16"><b>Setting Your Preferences</b><br/>&quot;Edit &gt; Preferences...&quot; lets you modify a number of settings, such as the path to your media files, and allows you to adjust many aspects of the Gramps presentation to your needs. Each separate view can also be configured under &quot;View &gt; Configure View...&quot;</_tip>
<_tip number="17"><b>Gramps Reports</b><br/>Gramps offers a wide variety of reports. The Graphical Reports and Graphs can present complex relationships easily and the Text Reports are particularly useful if you want to send the results of your family tree to members of the family via email. If you're ready to make a website for your family tree then there's a report for that as well.</_tip>
<_tip number="18"><b>Starting a New Family Tree</b><br/>A good way to start a new family tree is to enter all the members of the family into the database using the Person View (use &quot;Edit &gt; Add...&quot; or click on the Add a new person button from the People View). Then go to the Relationship View and create relationships between people.</_tip>
<_tip number="19"><b>What's That For?</b><br/>Unsure what a button does? Simply hold the mouse over a button and a tooltip will appear.</_tip>
<_tip number="20"><b>Unsure of a Date?</b><br/>If you're unsure about the date an event occurred, Gramps allows you to enter a wide range of date formats based on a guess or an estimate. For instance, &quot;about 1908&quot; is a valid entry for a birth date in Gramps. Click the Date button next to the date field and see the Gramps Manual to learn more.</_tip>
<_tip number="21"><b>Duplicate Entries</b><br/>&quot;Tools &gt; Database Processing &gt; Find Possible Duplicate People...&quot; allows you to locate (and merge) entries of the same person entered more than once in the database.</_tip>
<_tip number="22"><b>Merging Entries</b><br/>The function &quot;Edit &gt; Compare and Merge...&quot; allows you to combine separately listed people into one. Select the second entry by holding the Control key as you click. This is very useful for combining two databases with overlapping people, or combining erroneously entered differing names for one individual. This also works for the Places, Sources and Repositories views.</_tip>
<_tip number="23"><b>Organising the Views</b><br/>Many of the views can present your data as either a hierarchical tree or as a simple list. Each view can also be configured to the way you like it. Have a look to the right of the top toolbar or under the &quot;View&quot; menu.</_tip>
<_tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People and Events. You can move forward and backward through the list using &quot;Go &gt; Forward&quot; and &quot;Go &gt; Back&quot; or the arrow buttons.</_tip>
<_tip number="25"><b>Keyboard Shortcuts</b><br/>Tired of having to take your hand off the keyboard to use the mouse? Many functions in Gramps have keyboard shortcuts. If one exists for a function it is displayed on the right side of the menu.</_tip>
<_tip number="26"><b>Read the Manual</b><br/>Don't forget to read the Gramps manual, &quot;Help &gt; User Manual&quot;. The developers have worked hard to make most operations intuitive but the manual is full of information that will make your time spent on genealogy more productive.</_tip>
<_tip number="27"><b>Adding Children</b><br/>To add children in Gramps there are two options. You can find one of their parents in the Families View and open the family. Then choose to create a new person or add an existing person. You can also add children (or siblings) from inside the Family Editor.</_tip>
<_tip number="28"><b>Editing the Parent-Child Relationship</b><br/> You can edit the relationship of a child to its parents by double clicking the child in the Family Editor. Relationships can be any of Adopted, Birth, Foster, None, Sponsored, Stepchild and Unknown.</_tip>
<_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 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 &quot;Help &gt; Gramps Mailing Lists&quot;.</_tip>
<_tip number="33"><b>Contributing to Gramps</b><br/>Want to help with Gramps but can't write programs? Not a problem! A project as large as Gramps requires people with a wide variety of skills. Contributions can be anything from writing documentation to testing development versions and helping with the web site. Start by subscribing to the Gramps developers mailing list, gramps-devel, and introducing yourself. Subscription information can be found at &quot;Help &gt; Gramps Mailing Lists&quot;</_tip>
<_tip number="34"><b>So What's in a Name?</b><br/>The name Gramps was suggested to the original developer, Don Allingham, by his father. It stands for <i>Genealogical Research and Analysis Management Program System</i>. It is a full-featured genealogy program letting you store, edit, and research genealogical data. The Gramps database back end is so robust that some users are managing genealogies containing hundreds of thousands of people.</_tip>
<_tip number="36"><b>Bookmarking Individuals</b><br/>The Bookmarks menu is a convenient place to store the names of frequently used individuals. Selecting a bookmark will make that person the Active Person. To bookmark someone make them the Active Person then go to &quot;Bookmarks &gt; Add Bookmark&quot; or press Ctrl+D. You can also bookmark most of the other objects.</_tip>
<_tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a either a reddish background or a red dot on the right edge of the field. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under &quot;Edit &gt; Preferences &gt; Display&quot;.</_tip>
<_tip number="38"><b>Listing Events</b><br/>Events are added using the editor opened with &quot;Person &gt; Edit Person &gt; Events&quot;. There is a long list of preset event types. You can add your own event types by typing in the text field, they will be added to the available events, but not translated.</_tip>
<_tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the preferred name by dragging it to the Preferred Name section.</_tip>
<_tip number="40"><b>Ancestor View</b><br/>The Ancestry View displays a traditional pedigree chart. Hold the mouse over an individual to see more information about them or right click on an individual to access other family members and settings. Play with the settings to see the different options.</_tip>
<_tip number="41"><b>Managing Sources</b><br/>The Sources View shows a list of all sources in a single window. From here you can edit your sources, merge duplicates and see which individuals reference each source. You can use filters to group your sources.</_tip>
<_tip number="42"><b>Managing Places</b><br/>The Places View shows a list of all places in the database. The list can be sorted by a number of different criteria, such as City, County or State.</_tip>
<_tip number="43"><b>Media View</b><br/>The Media View shows a list of all media entered in the database. These can be graphic images, videos, sound clips, spreadsheets, documents, and more.</_tip>
<_tip number="44"><b>Filters</b><br/>Filters allow you to limit the people seen in the People View. In addition to the many preset filters, Custom Filters can be created limited only by your imagination. Custom filters are created from &quot;Edit &gt; Person Filter Editor&quot;.</_tip>
<_tip number="45"><b>The GEDCOM File Format</b><br/>Gramps allows you to import from, and export to, the GEDCOM format. There is extensive support for the industry standard GEDCOM version 5.5, so you can exchange Gramps information to and from users of most other genealogy programs. Filters exist that make importing and exporting GEDCOM files trivial.</_tip>
<_tip number="46"><b>The Gramps XML Package</b><br/>You can export your Family Tree as a Gramps XML Package. This is a compressed file containing your family tree data and all the media files connected to the database (images for example). This file is completely portable so is useful for backups or sharing with other Gramps users. This format has the key advantage over GEDCOM that no information is ever lost when exporting and importing.</_tip>
<_tip number="48"><b>Web Family Tree Format</b><br/>Gramps can export data to the Web Family Tree (WFT) format. This format allows a family tree to be displayed online using a single file, instead of many html files.</_tip>
<_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 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>
<_tip number="53"><b>Privacy in Gramps</b><br/>Gramps helps you to keep personal information secure by allowing you to mark information as private. Data marked as private can be excluded from reports and data exports. Look for the padlock which toggles records between private and public.</_tip>
<_tip number="54"><b>Keeping Good Records</b><br/>Be accurate when recording genealogical information. Don't make assumptions while recording primary information; write it exactly as you see it. Use bracketed comments to indicate your additions, deletions or comments. Use of the Latin 'sic' is recommended to confirm the accurate transcription of what appears to be an error in a source.</_tip>
<_tip number="57"><b>Extra Reports and Tools</b><br/>Extra tools and reports can be added to Gramps with the &quot;Addon&quot; system. See them under &quot;Help &gt; Extra Reports/Tools&quot;. This is the best way for advanced users to experiment and create new functionality.</_tip>
<_tip number="58"><b>Book Reports</b><br/>The Book report under &quot;Reports &gt; Books &gt; Book Report...&quot;, allows you to collect a variety of reports into a single document. This single report is easier to distribute than multiple reports, especially when printed.</_tip>
<_tip number="59"><b>Gramps Announcements</b><br/>Interested in getting notified when a new version of Gramps is released? Join the Gramps-announce mailing list at &quot;Help &gt; Gramps Mailing Lists&quot;</_tip>
<_tip number="60"><b>Record Your Sources</b><br/>Information collected about your family is only as good as the source it came from. Take the time and trouble to record all the details of where the information came from. Whenever possible get a copy of original documents.</_tip>
<_tip number="61"><b>Directing Your Research</b><br/>Go from what you know to what you do not. Always record everything that is known before making conjectures. Often the facts at hand suggest plenty of direction for more research. Don't waste time looking through thousands of records hoping for a trail when you have other unexplored leads.</_tip>
<_tip number="62"><b>The 'How and Why' of Your Genealogy</b><br/> Genealogy isn't only about dates and names. It is about people. Be descriptive. Include why things happened, and how descendants might have been shaped by the events they went through. Narratives go a long way in making your family history come alive.</_tip>
<_tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 40 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</_tip>
<_tip number="64"><b>Gramps Translators</b><br/>Gramps has been designed so that new translations can easily be added with little development effort. If you are interested in participating please email gramps-devel@lists.sf.net</_tip>
<_tip number="66"><b>Hello, привет or 喂</b><br/>Whatever script you use Gramps offers full Unicode support. Characters for all languages are properly displayed.</_tip>
<_tip number="67"><b>The Home Person</b><br/>Anyone can be chosen as the Home Person in Gramps. Use &quot;Edit &gt; Set Home Person&quot; in the Person View. The home person is the person who is selected when the database is opened or when the home button is pressed.</_tip>
<_tip number="70"><b>The Gramps Code</b><br/>Gramps is written in a computer language called Python using the GTK and GNOME libraries for the graphical interface. Gramps is supported on any computer system where these programs have been ported. Gramps is known to be run on Linux, BSD, Solaris, Windows and Mac OS X.</_tip>
<_tip number="71"><b>Open Source Software</b><br/>The Free/Libre and Open Source Software (FLOSS) development model means Gramps can be extended by any programmer since all of the source code is freely available under its license. So it's not just about free beer, it's also about freedom to study and change the tool. For more about Open Source software lookup the Free Software Foundation and the Open Source Initiative.</_tip>
<_tip number="72"><b>The Gramps Software License</b><br/>You are free to use and share Gramps with others. Gramps is freely distributable under the GNU General Public License, see http://www.gnu.org/licenses/licenses.html#GPL to read about the rights and restrictions of this license.</_tip>
<_tip number="73"><b>Gramps for Gnome or KDE?</b><br/>For Linux users Gramps works with whichever desktop environment you prefer. As long as the required GTK libraries are installed it will run fine.</_tip>
</tips>
+24
View File
@@ -1,3 +1,27 @@
gramps (5.1.5-1) unstable; urgency=medium
* New release
* Update copyright file
* Drop patch, incorporated upstream
-- Ross Gammon <rossgammon@debian.org> Sat, 12 Feb 2022 17:01:21 +0100
gramps (5.1.4-1) unstable; urgency=medium
* New release
* Add new copyrights
* Update watch file
* Patch probably alive test to fix FTBFS
-- Ross Gammon <rossgammon@debian.org> Sun, 15 Aug 2021 18:31:56 +0200
gramps (5.1.3-1) focal; urgency=medium
* New release
* Update debian/copyright for Alex Roitman
-- Ross Gammon <rosco2@ubuntu.com> Sun, 16 Aug 2020 20:23:34 +0200
gramps (5.1.2-1) unstable; urgency=medium
* New release
+3 -1
View File
@@ -46,7 +46,7 @@ Copyright: 2000-2007, Alex Roitman
2009, Florian Heinle
2009, Gerald W. Britton
2009, Igal Shapira
2009-2018, Nick Hall
2009-2022, Nick Hall
2009, Pander Musubi
2009, Robert Ham
2009, Swoon on bug tracker
@@ -92,6 +92,8 @@ Copyright: 2000-2007, Alex Roitman
2018, Robin van der Vliet
2018, Theo van Rijn
2019, Matthias Kemmer
2020, Jan Sparreboom
2021, Mirko Leonhaeuser
License: GPL-2+
Files: debian/*
+3 -5
View File
@@ -1,8 +1,6 @@
version=3
version=4
opts=\
dversionmangle=s/(\~|\+)(debian|dfsg|ds|deb)(\.\d+)?$//,\
filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/$1\.tar\.gz/,\
filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/gramps-project-$1\.tar\.gz/,\
repacksuffix=~dfsg \
https://github.com/gramps-project/gramps/tags \
.*/archive/v?([\d\.]+).tar.gz
.*/v?(\d\S+)\.tar\.gz
+1 -1
View File
@@ -57,7 +57,7 @@ master_doc = 'index'
# General information about the project.
project = 'Gramps'
copyright = '2001-2019, The Gramps Project'
copyright = '2001-2023, The Gramps Project'
author = 'Donald N. Allingham'
# The version info for the project you're documenting, acts as replacement for
+34 -3
View File
@@ -52,9 +52,14 @@ from gramps.gen.db.utils import make_database
from gramps.gen.errors import DbError
from gramps.gen.dbstate import DbState
from gramps.gen.db.exceptions import (DbUpgradeRequiredError,
DbSupportedError,
BsddbDowngradeError,
DbVersionError,
DbPythonError,
DbEnvironmentError,
BsddbUpgradeRequiredError,
BsddbDowngradeRequiredError,
PythonUpgradeRequiredError,
PythonDowngradeError,
DbConnectionError)
from gramps.gen.plug import BasePluginManager
from gramps.gen.utils.config import get_researcher
@@ -171,8 +176,34 @@ class CLIDbLoader:
try:
self.dbstate.db.load(filename, self._pulse_progress, mode,
username=username, password=password)
except (DbConnectionError, DbSupportedError, DbUpgradeRequiredError,
DbVersionError, DbPythonError, DbConnectionError) as msg:
except DbEnvironmentError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except BsddbUpgradeRequiredError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except BsddbDowngradeRequiredError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except BsddbDowngradeError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except DbUpgradeRequiredError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except PythonDowngradeError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except PythonUpgradeRequiredError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except DbVersionError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except DbPythonError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except DbConnectionError as msg:
self.dbstate.no_database()
self._errordialog(_("Cannot open database"), str(msg))
except OSError as msg:
+5 -7
View File
@@ -47,8 +47,8 @@ from .const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value): # enable deferred translations (see Python docs 22.1.3.4)
return value
#---------------------------------------------------------------
#
@@ -133,6 +133,7 @@ register('behavior.addmedia-image-dir', '')
register('behavior.addmedia-relative-path', False)
register('behavior.autoload', False)
register('behavior.avg-generation-gap', 20)
register('behavior.betawarn', False)
register('behavior.check-for-addon-updates', 0)
register('behavior.check-for-addon-update-types', ["new"])
register('behavior.last-check-for-addon-updates', "1970/01/01")
@@ -156,7 +157,7 @@ register('behavior.translator-needed', True)
register('behavior.use-tips', False)
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/gramps52")
register('behavior.addons-url', "https://raw.githubusercontent.com/gramps-project/addons/master/gramps51")
register('database.backend', 'sqlite')
register('database.compress-backup', True)
@@ -185,7 +186,6 @@ register('geography.zoom_when_center', 12)
register('geography.show_cross', False)
register('geography.path', "")
register('geography.use-keypad', True)
register('geography.personal-map', "")
# note that other calls to "register" are done in realtime (when
# needed), for instance to four 'interface.clipboard' variables --
@@ -316,7 +316,7 @@ 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', _("|January", "localized lexeme inflections"))
register('test.january', _("localized lexeme inflections||January"))
#---------------------------------------------------------------
#
@@ -368,5 +368,3 @@ if not os.path.exists(CONFIGMAN.filename):
CONFIGMAN.load()
config = CONFIGMAN
if config.get('database.backend') == 'bsddb':
config.set('database.backend', 'sqlite')
+5 -6
View File
@@ -41,7 +41,7 @@ import uuid
#-------------------------------------------------------------------------
from .git_revision import get_git_revision
from .constfunc import get_env_var
from ..version import VERSION, VERSION_TUPLE, major_version, DEV_VERSION
from ..version import VERSION, VERSION_TUPLE, major_version
from .utils.resourcepath import ResourcePath
from .utils.grampslocale import GrampsLocale
@@ -145,8 +145,7 @@ sys.path.insert(0, ROOT_DIR)
git_revision = get_git_revision(ROOT_DIR).replace('\n', '')
if sys.platform == 'win32' and git_revision == "":
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
if DEV_VERSION:
VERSION += git_revision
VERSION += git_revision
#VERSION += "-1"
#
@@ -226,7 +225,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
#
#-------------------------------------------------------------------------
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
"© 2007-2020 The Gramps Developers"
"© 2007-2023 The Gramps Developers"
COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
"Management Programming System)\n"
"is a personal genealogy program.")
@@ -257,8 +256,8 @@ DOCUMENTERS = [
THUMBSCALE = 96.0
THUMBSCALE_LARGE = 180.0
XMLFILE = "data.gramps"
NO_SURNAME = "(%s)" % _("none", "surname")
NO_GIVEN = "(%s)" % _("none", "given-name")
NO_SURNAME = "(%s)" % _("surname|none")
NO_GIVEN = "(%s)" % _("given-name|none")
ARABIC_COMMA = "،"
ARABIC_SEMICOLON = "؛"
DOCGEN_OPTIONS = 'Docgen Options'
+1 -14
View File
@@ -290,8 +290,7 @@ class DateDisplayDE(DateDisplay):
formats = (
"JJJJ-MM-DD (ISO)", "Numerisch", "Monat Tag Jahr",
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr",
"Numerisch mit führenden Nullen"
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr"
)
# this definition must agree with its "_display_gregorian" method
@@ -344,18 +343,6 @@ 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:
+27 -25
View File
@@ -83,35 +83,37 @@ class DateParserNL(DateParser):
month_to_int["xbris"] = 12
modifier_to_int = {
'voor' : Date.MOD_BEFORE,
'na' : Date.MOD_AFTER,
'tegen' : Date.MOD_ABOUT,
'om' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT,
'ca.' : Date.MOD_ABOUT,
'voor' : Date.MOD_BEFORE,
'na' : Date.MOD_AFTER,
'ca.' : Date.MOD_ABOUT,
'circa' : Date.MOD_ABOUT,
'om' : Date.MOD_ABOUT,
'omstreeks' : Date.MOD_ABOUT,
'ongeveer' : Date.MOD_ABOUT,
'rond' : Date.MOD_ABOUT,
'tegen' : Date.MOD_ABOUT,
}
calendar_to_int = {
'gregoriaans' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN,
'juliaans' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN,
'hebreeuws' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW,
'islamitisch' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC,
'franse republiek': Date.CAL_FRENCH,
'fran.' : Date.CAL_FRENCH,
'persisch' : Date.CAL_PERSIAN,
'zweeds' : Date.CAL_SWEDISH,
'z' : Date.CAL_SWEDISH,
'gregoriaans' : Date.CAL_GREGORIAN,
'greg.' : Date.CAL_GREGORIAN,
'juliaans' : Date.CAL_JULIAN,
'jul.' : Date.CAL_JULIAN,
'hebreeuws' : Date.CAL_HEBREW,
'hebr.' : Date.CAL_HEBREW,
'islamitisch' : Date.CAL_ISLAMIC,
'isl.' : Date.CAL_ISLAMIC,
'frans republiekeins' : Date.CAL_FRENCH,
'fran.' : Date.CAL_FRENCH,
'persisch' : Date.CAL_PERSIAN,
'zweeds' : Date.CAL_SWEDISH,
'z' : Date.CAL_SWEDISH,
}
quality_to_int = {
'geschat' : Date.QUAL_ESTIMATED,
'geschat' : Date.QUAL_ESTIMATED,
'gesch.' : Date.QUAL_ESTIMATED,
'berekend' : Date.QUAL_CALCULATED,
'berekend' : Date.QUAL_CALCULATED,
'ber.' : Date.QUAL_CALCULATED,
}
@@ -147,17 +149,17 @@ class DateDisplayNL(DateDisplay):
calendar = (
"", "juliaans", "hebreeuws",
"franse republiek", "persisch", "islamitisch",
"frans republikeins", "persisch", "islamitisch",
"zweeds" )
_mod_str = ("", "voor ", "na ", "rond ", "", "", "")
_mod_str = ("", "voor ", "na ", "omstreeks ", "", "", "")
_qual_str = ("", "geschat ", "berekend ")
_bce_str = "%s v. Chr."
formats = (
"JJJJ-MM-DD (ISO)", "Numerisch DD/MM/JJ", "Maand Dag, Jaar",
"JJJJ-MM-DD (ISO)", "Numeriek DD/MM/JJJJ", "Maand Dag, Jaar",
"Mnd. Dag Jaar", "Dag Maand Jaar", "Dag Mnd. Jaar"
)
# this definition must agree with its "_display_gregorian" method
+30 -30
View File
@@ -52,8 +52,8 @@ from ..utils.grampslocale import GrampsLocale
from ._datestrings import DateStrings
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value): # enable deferred translations (see Python docs 22.1.3.4)
return value
#-------------------------------------------------------------------------
#
@@ -74,7 +74,7 @@ class DateDisplay:
# This should be the format that is used under the locale by
# strftime() for '%x'.
# You may translate this as "Numerical", "System preferred", or similar.
_T_("Numerical", "date format"),
_T_("date format|Numerical"),
# Full month name, day, year
_T_("Month Day, Year"),
@@ -186,7 +186,7 @@ class DateDisplay:
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "from"),
: _("from|{long_month} {year}"),
"to"
# second date in a span
@@ -194,7 +194,7 @@ class DateDisplay:
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "to"),
: _("to|{long_month} {year}"),
"between"
# first date in a range
@@ -202,7 +202,7 @@ class DateDisplay:
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "between"),
: _("between|{long_month} {year}"),
"and"
# second date in a range
@@ -210,42 +210,42 @@ class DateDisplay:
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "and"),
: _("and|{long_month} {year}"),
"before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "before"),
: _("before|{long_month} {year}"),
"after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "after"),
: _("after|{long_month} {year}"),
"about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "about"),
: _("about|{long_month} {year}"),
"estimated"
# If "estimated <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "estimated"),
: _("estimated|{long_month} {year}"),
"calculated"
# If "calculated <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "calculated"),
: _("calculated|{long_month} {year}"),
}
self.FORMATS_short_month_year = {
@@ -258,7 +258,7 @@ class DateDisplay:
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "from"),
: _("from|{short_month} {year}"),
"to"
# second date in a span
@@ -266,7 +266,7 @@ class DateDisplay:
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "to"),
: _("to|{short_month} {year}"),
"between"
# first date in a range
@@ -274,7 +274,7 @@ class DateDisplay:
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "between"),
: _("between|{short_month} {year}"),
"and"
# second date in a range
@@ -282,42 +282,42 @@ class DateDisplay:
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "and"),
: _("and|{short_month} {year}"),
"before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "before"),
: _("before|{short_month} {year}"),
"after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "after"),
: _("after|{short_month} {year}"),
"about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "about"),
: _("about|{short_month} {year}"),
"estimated"
# If "estimated <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "estimated"),
: _("estimated|{short_month} {year}"),
"calculated"
# If "calculated <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "calculated"),
: _("calculated|{short_month} {year}"),
}
def formats_changed(self):
@@ -424,12 +424,12 @@ class DateDisplay:
# If there is no special inflection for "from <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "from" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "from-date"))
inflect=self._("from-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "to <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "to" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "to-date"))
inflect=self._("to-date|"))
return self._("{date_quality}from {date_start} to {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
@@ -449,12 +449,12 @@ class DateDisplay:
# If there is no special inflection for "between <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "between" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "between-date"))
inflect=self._("between-date|"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "and <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "and" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "and-date"))
inflect=self._("and-date|"))
return self._("{date_quality}between {date_start} and {date_stop}"
"{nonstd_calendar_and_ny}").format(
date_quality=qual_str,
@@ -488,27 +488,27 @@ class DateDisplay:
# If there is no special inflection for "before <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "before" in ENGLISH!!! ENGLISH!!!
date_type = _("", "before-date")
date_type = _("before-date|")
elif mod == Date.MOD_AFTER:
# If there is no special inflection for "after <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "after" in ENGLISH!!! ENGLISH!!!
date_type = _("", "after-date")
date_type = _("after-date|")
elif mod == Date.MOD_ABOUT:
# If there is no special inflection for "about <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "about" in ENGLISH!!! ENGLISH!!!
date_type = _("", "about-date")
date_type = _("about-date|")
elif qual == Date.QUAL_ESTIMATED:
# If there is no special inflection for "estimated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "estimated" in ENGLISH!!! ENGLISH!!!
date_type = _("", "estimated-date")
date_type = _("estimated-date|")
elif qual == Date.QUAL_CALCULATED:
# If there is no special inflection for "calculated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "calculated" in ENGLISH!!! ENGLISH!!!
date_type = _("", "calculated-date")
date_type = _("calculated-date|")
else:
date_type = ""
# TODO -- do "estimated" and "calculated" need their own "if"?
+98 -98
View File
@@ -76,36 +76,36 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("|January", "localized lexeme inflections"),
_("|February", "localized lexeme inflections"),
_("|March", "localized lexeme inflections"),
_("|April", "localized lexeme inflections"),
_("|May", "localized lexeme inflections"),
_("|June", "localized lexeme inflections"),
_("|July", "localized lexeme inflections"),
_("|August", "localized lexeme inflections"),
_("|September", "localized lexeme inflections"),
_("|October", "localized lexeme inflections"),
_("|November", "localized lexeme inflections"),
_("|December", "localized lexeme inflections") )
_("localized lexeme inflections||January"),
_("localized lexeme inflections||February"),
_("localized lexeme inflections||March"),
_("localized lexeme inflections||April"),
_("localized lexeme inflections||May"),
_("localized lexeme inflections||June"),
_("localized lexeme inflections||July"),
_("localized lexeme inflections||August"),
_("localized lexeme inflections||September"),
_("localized lexeme inflections||October"),
_("localized lexeme inflections||November"),
_("localized lexeme inflections||December") )
self.short_months = ( "",
# TRANSLATORS: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("|Jan", "localized lexeme inflections - short month form"),
_("|Feb", "localized lexeme inflections - short month form"),
_("|Mar", "localized lexeme inflections - short month form"),
_("|Apr", "localized lexeme inflections - short month form"),
_("|May", "localized lexeme inflections - short month form"),
_("|Jun", "localized lexeme inflections - short month form"),
_("|Jul", "localized lexeme inflections - short month form"),
_("|Aug", "localized lexeme inflections - short month form"),
_("|Sep", "localized lexeme inflections - short month form"),
_("|Oct", "localized lexeme inflections - short month form"),
_("|Nov", "localized lexeme inflections - short month form"),
_("|Dec", "localized lexeme inflections - short month form") )
_("localized lexeme inflections - short month form||Jan"),
_("localized lexeme inflections - short month form||Feb"),
_("localized lexeme inflections - short month form||Mar"),
_("localized lexeme inflections - short month form||Apr"),
_("localized lexeme inflections - short month form||May"),
_("localized lexeme inflections - short month form||Jun"),
_("localized lexeme inflections - short month form||Jul"),
_("localized lexeme inflections - short month form||Aug"),
_("localized lexeme inflections - short month form||Sep"),
_("localized lexeme inflections - short month form||Oct"),
_("localized lexeme inflections - short month form||Nov"),
_("localized lexeme inflections - short month form||Dec") )
_ = locale.translation.sgettext
self.alt_long_months = ( "",
@@ -113,28 +113,28 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to add proper alternatives to be recognized in your localized
# DateParser code!
_("|", "alternative month names for January"),
_("|", "alternative month names for February"),
_("|", "alternative month names for March"),
_("|", "alternative month names for April"),
_("|", "alternative month names for May"),
_("|", "alternative month names for June"),
_("|", "alternative month names for July"),
_("|", "alternative month names for August"),
_("|", "alternative month names for September"),
_("|", "alternative month names for October"),
_("|", "alternative month names for November"),
_("|", "alternative month names for December") )
_("alternative month names for January||"),
_("alternative month names for February||"),
_("alternative month names for March||"),
_("alternative month names for April||"),
_("alternative month names for May||"),
_("alternative month names for June||"),
_("alternative month names for July||"),
_("alternative month names for August||"),
_("alternative month names for September||"),
_("alternative month names for October||"),
_("alternative month names for November||"),
_("alternative month names for December||") )
self.calendar = (
# Must appear in the order indexed by Date.CAL_... numeric constants
_("Gregorian", "calendar"),
_("Julian", "calendar"),
_("Hebrew", "calendar"),
_("French Republican", "calendar"),
_("Persian", "calendar"),
_("Islamic", "calendar"),
_("Swedish", "calendar") )
_("calendar|Gregorian"),
_("calendar|Julian"),
_("calendar|Hebrew"),
_("calendar|French Republican"),
_("calendar|Persian"),
_("calendar|Islamic"),
_("calendar|Swedish") )
_ = locale.translation.lexgettext
self.hebrew = (
@@ -143,19 +143,19 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("Tishri", "Hebrew month lexeme"),
_("Heshvan", "Hebrew month lexeme"),
_("Kislev", "Hebrew month lexeme"),
_("Tevet", "Hebrew month lexeme"),
_("Shevat", "Hebrew month lexeme"),
_("AdarI", "Hebrew month lexeme"),
_("AdarII", "Hebrew month lexeme"),
_("Nisan", "Hebrew month lexeme"),
_("Iyyar", "Hebrew month lexeme"),
_("Sivan", "Hebrew month lexeme"),
_("Tammuz", "Hebrew month lexeme"),
_("Av", "Hebrew month lexeme"),
_("Elul", "Hebrew month lexeme")
_("Hebrew month lexeme|Tishri"),
_("Hebrew month lexeme|Heshvan"),
_("Hebrew month lexeme|Kislev"),
_("Hebrew month lexeme|Tevet"),
_("Hebrew month lexeme|Shevat"),
_("Hebrew month lexeme|AdarI"),
_("Hebrew month lexeme|AdarII"),
_("Hebrew month lexeme|Nisan"),
_("Hebrew month lexeme|Iyyar"),
_("Hebrew month lexeme|Sivan"),
_("Hebrew month lexeme|Tammuz"),
_("Hebrew month lexeme|Av"),
_("Hebrew month lexeme|Elul")
)
self.french = (
@@ -164,19 +164,19 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("Vendémiaire", "French month lexeme"),
_("Brumaire", "French month lexeme"),
_("Frimaire", "French month lexeme"),
_("Nivôse", "French month lexeme"),
_("Pluviôse", "French month lexeme"),
_("Ventôse", "French month lexeme"),
_("Germinal", "French month lexeme"),
_("Floréal", "French month lexeme"),
_("Prairial", "French month lexeme"),
_("Messidor", "French month lexeme"),
_("Thermidor", "French month lexeme"),
_("Fructidor", "French month lexeme"),
_("Extra", "French month lexeme"),
_("French month lexeme|Vendémiaire"),
_("French month lexeme|Brumaire"),
_("French month lexeme|Frimaire"),
_("French month lexeme|Nivôse"),
_("French month lexeme|Pluviôse"),
_("French month lexeme|Ventôse"),
_("French month lexeme|Germinal"),
_("French month lexeme|Floréal"),
_("French month lexeme|Prairial"),
_("French month lexeme|Messidor"),
_("French month lexeme|Thermidor"),
_("French month lexeme|Fructidor"),
_("French month lexeme|Extra"),
)
self.islamic = (
@@ -185,18 +185,18 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("Muharram", "Islamic month lexeme"),
_("Safar", "Islamic month lexeme"),
_("Rabi`al-Awwal", "Islamic month lexeme"),
_("Rabi`ath-Thani", "Islamic month lexeme"),
_("Jumada l-Ula", "Islamic month lexeme"),
_("Jumada t-Tania", "Islamic month lexeme"),
_("Rajab", "Islamic month lexeme"),
_("Sha`ban", "Islamic month lexeme"),
_("Ramadan", "Islamic month lexeme"),
_("Shawwal", "Islamic month lexeme"),
_("Dhu l-Qa`da", "Islamic month lexeme"),
_("Dhu l-Hijja", "Islamic month lexeme"),
_("Islamic month lexeme|Muharram"),
_("Islamic month lexeme|Safar"),
_("Islamic month lexeme|Rabi`al-Awwal"),
_("Islamic month lexeme|Rabi`ath-Thani"),
_("Islamic month lexeme|Jumada l-Ula"),
_("Islamic month lexeme|Jumada t-Tania"),
_("Islamic month lexeme|Rajab"),
_("Islamic month lexeme|Sha`ban"),
_("Islamic month lexeme|Ramadan"),
_("Islamic month lexeme|Shawwal"),
_("Islamic month lexeme|Dhu l-Qa`da"),
_("Islamic month lexeme|Dhu l-Hijja"),
)
self.persian = (
@@ -205,35 +205,35 @@ class DateStrings:
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
_("Farvardin", "Persian month lexeme"),
_("Ordibehesht", "Persian month lexeme"),
_("Khordad", "Persian month lexeme"),
_("Tir", "Persian month lexeme"),
_("Mordad", "Persian month lexeme"),
_("Shahrivar", "Persian month lexeme"),
_("Mehr", "Persian month lexeme"),
_("Aban", "Persian month lexeme"),
_("Azar", "Persian month lexeme"),
_("Dey", "Persian month lexeme"),
_("Bahman", "Persian month lexeme"),
_("Esfand", "Persian month lexeme"),
_("Persian month lexeme|Farvardin"),
_("Persian month lexeme|Ordibehesht"),
_("Persian month lexeme|Khordad"),
_("Persian month lexeme|Tir"),
_("Persian month lexeme|Mordad"),
_("Persian month lexeme|Shahrivar"),
_("Persian month lexeme|Mehr"),
_("Persian month lexeme|Aban"),
_("Persian month lexeme|Azar"),
_("Persian month lexeme|Dey"),
_("Persian month lexeme|Bahman"),
_("Persian month lexeme|Esfand"),
)
self.modifiers = ("",
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("before ", "date modifier"),
_("date modifier|before "),
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("after ", "date modifier"),
_("date modifier|after "),
# TRANSLATORS: if the modifier is after the date
# put the space ahead of the word instead of after it
_("about ", "date modifier"),
_("date modifier|about "),
"", "", "")
self.qualifiers = ("",
_("estimated ", "date quality"),
_("calculated ", "date quality"),
_("date quality|estimated "),
_("date quality|calculated "),
)
# 6753: localized day names. Eventually should sprout into
+6 -13
View File
@@ -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, because that is the
FIXME: Ideally, only is_open() needs to be implemented here, bacause 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.
@@ -52,7 +52,6 @@ methods should be changed to generate exceptions. Possibly by globally changing
#
#-------------------------------------------------------------------------
import logging
import os
import inspect
from abc import ABCMeta
from types import FunctionType
@@ -160,10 +159,12 @@ def wrapper(method):
"""
class_name = args[0].__class__.__name__
func_name = method.__name__
caller_frame = inspect.stack()[1]
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1],
caller_frame[2], caller_frame[3])
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
c_code.co_name)
return method(*args, **keywargs)
return wrapped
@@ -757,14 +758,6 @@ 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.
+194 -29
View File
@@ -122,6 +122,121 @@ class DbPythonError(Exception):
'min_vers': self.min_vers,
'max_vers': self.max_vers}
class BsddbDowngradeError(Exception):
"""
Error used to report that the Berkeley database used to create the family
tree is of a version that is too new to be supported by the current version.
"""
def __init__(self, env_version, bdb_version):
Exception.__init__(self)
self.env_version = str(env_version)
self.bdb_version = str(bdb_version)
def __str__(self):
return _('The Family Tree you are trying to load is in the Bsddb '
'version %(env_version)s format. This version of Gramps uses '
'Bsddb version %(bdb_version)s. So you are trying to load '
'data created in a newer format into an older program, and '
'this is bound to fail.\n\n'
'You should start your '
'%(bold_start)snewer%(bold_end)s version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree. You can then import '
'this backup into this version of Gramps.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'env_version' : self.env_version,
'bdb_version' : self.bdb_version }
class BsddbDowngradeRequiredError(Exception):
"""
Error used to report that the Berkeley database used to create the family
tree is of a version that is newer than the current version, but it may be
possible to open the tree, because the difference is only a point upgrade
(i.e. a difference in the last digit of the version tuple).
"""
def __init__(self, env_version, bdb_version):
Exception.__init__(self)
self.env_version = str(env_version)
self.bdb_version = str(bdb_version)
def __str__(self):
return _('The Family Tree you are trying to load is in the Bsddb '
'version %(env_version)s format. This version of Gramps uses '
'Bsddb version %(bdb_version)s. So you are trying to load '
'data created in a newer format into an older program. In '
'this particular case, the difference is very small, so it '
'may work.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your '
'%(bold_start)snewer%(bold_end)s version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'env_version' : self.env_version,
'bdb_version' : self.bdb_version }
class BsddbUpgradeRequiredError(Exception):
"""
Error used to report that the Berkeley database used to create the family
tree is of a version that is too new to be supported by the current version.
"""
def __init__(self, env_version, bsddb_version):
Exception.__init__(self)
self.env_version = str(env_version)
self.bsddb_version = str(bsddb_version)
def __str__(self):
return _('The Family Tree you are trying to load is in the Bsddb '
'version %(env_version)s format. This version of Gramps uses '
'Bsddb version %(bdb_version)s. Therefore you cannot load '
'this Family Tree without upgrading the Bsddb version of the '
'Family Tree.\n\n'
'Opening the Family Tree with this version of Gramps might '
'irretrievably corrupt your Family Tree. You are strongly '
'advised to backup your Family Tree.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your %(bold_start)sold%(bold_end)s '
'version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'env_version' : self.env_version,
'bdb_version' : self.bsddb_version }
class DbEnvironmentError(Exception):
"""
Error used to report that the database 'environment' could not be opened.
Most likely, the database was created by a different version of the underlying database engine.
"""
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
def __str__(self):
return (_("Gramps has detected a problem in opening the 'environment' "
"of the underlying Berkeley database used to store this "
"Family Tree. The most likely cause "
"is that the database was created with an old version "
"of the Berkeley database program, "
"and you are now using a new version. "
"It is quite likely that your database has not been "
"changed by Gramps.\nIf possible, you should revert to your "
"old version of Gramps and its support software; export "
"your database to XML; close the database; "
"then upgrade again "
"to this version of Gramps and import the XML file "
"in an empty Family Tree. Alternatively, it may be possible "
"to use the Berkeley database recovery tools.")
+ '\n\n' + str(self.msg))
class DbUpgradeRequiredError(Exception):
"""
@@ -160,6 +275,73 @@ class DbUpgradeRequiredError(Exception):
'oldschema' : self.oldschema,
'newschema' : self.newschema }
class PythonDowngradeError(Exception):
"""
Error used to report that the Python version used to create the family tree
(i.e. Python3) is a version that is newer than the current version
(i.e. Python2), so the Family Tree cannot be opened
"""
def __init__(self, db_python_version, current_python_version):
Exception.__init__(self)
self.db_python_version = str(db_python_version)
self.current_python_version = str(current_python_version)
def __str__(self):
return _('The Family Tree you are trying to load was created with '
'Python version %(db_python_version)s. This version of Gramps '
'uses Python version %(current_python_version)s. So you are '
'trying to load '
'data created in a newer format into an older program, and '
'this is bound to fail.\n\n'
'You should start your '
'%(bold_start)snewer%(bold_end)s version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree. You can then import '
'this backup into this version of Gramps.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'db_python_version': self.db_python_version,
'current_python_version': self.current_python_version }
class PythonUpgradeRequiredError(Exception):
"""
Error used to report that the Python version used to create the family tree
(i.e. Python2) is earlier than the current Python version (i.e. Python3), so
the Family Tree needs to be upgraded.
"""
def __init__(self, db_python_version, current_python_version):
Exception.__init__(self)
self.db_python_version = str(db_python_version)
self.current_python_version = str(current_python_version)
def __str__(self):
return _('The Family Tree you are trying to load is in the Python '
'version %(db_python_version)s format. This version of Gramps '
'uses Python version %(current_python_version)s. Therefore '
'you cannot load this Family Tree without upgrading the '
'Python version of the Family Tree.\n\n'
'If you upgrade then you won\'t be able to use the previous '
'version of Gramps, even if you subsequently '
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
'%(wiki_manual_export_html_start)sexport%(html_end)s '
'your upgraded Family Tree.\n\n'
'Upgrading is a difficult task which could irretrievably '
'corrupt your Family Tree if it is interrupted or fails.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your %(bold_start)sold%(bold_end)s '
'version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
'wiki_manual_export_html_start' : URL_EXPORT_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'db_python_version': self.db_python_version,
'current_python_version': self.current_python_version }
class DbConnectionError(Exception):
"""
@@ -178,35 +360,6 @@ class DbConnectionError(Exception):
'message': self.msg,
'settings_file': self.settings_file}
class DbSupportedError(Exception):
"""
Error used to report that a database is no longer supported.
"""
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
def __str__(self):
return _('The Family Tree you are trying to load is in the %(dbtype)s '
'database, which is no longer supported.\nTherefore you '
'cannot load this Family Tree without upgrading.\n\n'
'If you upgrade then you won\'t be able to use the previous '
'version of Gramps, even if you subsequently '
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
'%(wiki_manual_export_html_start)sexport%(html_end)s '
'your upgraded Family Tree.\n\n'
'You are strongly advised to backup your Family Tree.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your previous version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'dbtype' : self.msg,
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
'wiki_manual_export_html_start' : URL_EXPORT_START ,
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>'}
if __name__ == "__main__":
"""
Call this from the CLI (in order to find the imported modules):
@@ -217,8 +370,20 @@ if __name__ == "__main__":
print("\nDbVersionError:\n",
DbVersionError('1.6.0', '1.5.0', '1.5.1'))
print("\nBsddbDowngradeError:\n",
BsddbDowngradeError('4.8.30', '4.8.29'))
print("\nBsddbDowngradeRequiredError:\n",
BsddbDowngradeRequiredError('4.8.30', '4.8.29'))
print("\nBsddbUpgradeRequiredError:\n",
BsddbUpgradeRequiredError('4.8.29', '4.8.30'))
print("\nDbEnvironmentError:\n",
DbEnvironmentError('test message'))
print("\nDbUpgradeRequiredError:\n",
DbUpgradeRequiredError('1.5.1', '1.6.0'))
print("\nPythonDowngradeError:\n",
PythonDowngradeError('3', '2'))
print("\nPythonUpgradeRequiredError:\n",
PythonUpgradeRequiredError('2', '3'))
sys.exit(0)
print("\nxxx:\n",
+4 -57
View File
@@ -47,7 +47,7 @@ from . import (DbReadBase, DbWriteBase, DbUndo, DBLOGNAME, DBUNDOFN,
REPOSITORY_KEY, NOTE_KEY, TAG_KEY, TXNADD, TXNUPD, TXNDEL,
KEY_TO_NAME_MAP, DBMODE_R, DBMODE_W)
from .utils import write_lock_file, clear_lock_file
from .exceptions import DbVersionError, DbUpgradeRequiredError
from .exceptions import DbVersionError
from ..errors import HandleError
from ..utils.callback import Callback
from ..updatecallback import UpdateCallback
@@ -312,7 +312,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
__callback_map = {}
VERSION = (20, 0, 0)
VERSION = (18, 0, 0)
def __init__(self, directory=None):
DbReadBase.__init__(self)
@@ -537,7 +537,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
self.transaction = None
self.abort_possible = True
self._bm_changes = 0
self.has_changed = 0 # Also gives commits since startup
self.has_changed = False
self.surname_list = []
self.genderStats = GenderStats() # can pass in loaded stats as dict
self.owner = Researcher()
@@ -660,21 +660,12 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
self.db_is_open = True
# Check on db version to see if we need upgrade or too new
# Check on db version to see if too new
dbversion = int(self._get_metadata('version', default='0'))
if dbversion > self.VERSION[0]:
self.close()
raise DbVersionError(dbversion, 18, self.VERSION[0])
if not self.readonly and dbversion < self.VERSION[0]:
LOG.debug("Schema upgrade required from %s to %s",
dbversion, self.VERSION[0])
if force_schema_upgrade:
self._gramps_upgrade(dbversion, directory, callback)
else:
self.close()
raise DbUpgradeRequiredError(dbversion, self.VERSION[0])
def _close(self):
"""
Close database backend.
@@ -2479,47 +2470,3 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
enclosed_by = placeref.ref
break
return enclosed_by
def _gramps_upgrade(self, version, directory, callback=None):
"""
Here we do the calls for stepwise schema upgrades.
We assume that we need to rebuild secondary and reference maps.
"""
UpdateCallback.__init__(self, callback)
start = time.time()
from gramps.gen.db.upgrade import (
gramps_upgrade_14, gramps_upgrade_15, gramps_upgrade_16,
gramps_upgrade_17, gramps_upgrade_18, gramps_upgrade_19,
gramps_upgrade_20)
if version < 14:
gramps_upgrade_14(self)
if version < 15:
gramps_upgrade_15(self)
if version < 16:
gramps_upgrade_16(self)
if version < 17:
gramps_upgrade_17(self)
if version < 18:
gramps_upgrade_18(self)
if version < 19:
gramps_upgrade_19(self)
if version < 20:
gramps_upgrade_20(self)
self.rebuild_secondary(callback)
self.reindex_reference_map(callback)
self.reset()
self.set_schema_version(self.VERSION[0])
LOG.debug("Upgrade time: %d seconds" % int(time.time() - start))
def get_schema_version(self):
""" Return current schema version as an int """
return int(self._get_metadata('version', default='0'))
def set_schema_version(self, value):
""" set the current schema version """
self._set_metadata('version', str(value))
+6 -8
View File
@@ -78,15 +78,13 @@ class DbTxn(defaultdict):
elapsed_time = time.time() - self.start_time
if __debug__:
caller_frame = inspect.stack()[1]
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug(" **** DbTxn %s exited. Called from file %s, "
"line %s, in %s **** %.2f seconds" %
((hex(id(self)),)+
(os.path.split(caller_frame[1])[1],)+
tuple(caller_frame[i] for i in range(2, 4))+
(elapsed_time,)
)
)
"line %s, in %s **** %.2f seconds",
hex(id(self)), c_code.co_filename, c_frame.f_lineno,
c_code.co_name, elapsed_time)
return False
+11 -7
View File
@@ -42,6 +42,8 @@ from ..const import PLUGINS_DIR, USER_PLUGINS
from ..constfunc import win, get_env_var
from ..config import config
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
@@ -70,12 +72,14 @@ def make_database(plugin_id):
database = getattr(mod, pdata.databaseclass)
db = database()
import inspect
caller_frame = inspect.stack()[1]
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug("Database class instance created Class:%s instance:%s. "
"Called from File %s, line %s, in %s"
% ((db.__class__.__name__, hex(id(db)))
+ (os.path.split(caller_frame[1])[1],)
+ tuple(caller_frame[i] for i in range(2, 4))))
"Called from File %s, line %s, in %s",
db.__class__.__name__, hex(id(db)), c_code.co_filename,
c_frame.f_lineno, c_code.co_name)
return db
else:
raise Exception("can't load database backend: '%s'" % plugin_id)
@@ -209,8 +213,8 @@ def write_lock_file(name):
if win():
user = get_env_var('USERNAME')
host = get_env_var('USERDOMAIN')
if host is None:
host = ""
if not user:
user = _("Unknown")
else:
host = os.uname()[1]
# An ugly workaround for os.getlogin() issue with Konsole
+5 -4
View File
@@ -29,7 +29,6 @@ Provide the database state class
#
#------------------------------------------------------------------------
import sys
import os
import logging
import inspect
@@ -88,10 +87,12 @@ class DbState(Callback):
"""
class_name = self.__class__.__name__
func_name = "is_open"
caller_frame = inspect.stack()[1]
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
_LOG.debug('calling %s.%s()... from file %s, line %s in %s',
class_name, func_name, os.path.split(caller_frame[1])[1],
caller_frame[2], caller_frame[3])
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
c_code.co_name)
return (self.db is not None) and self.db.is_open()
def change_database(self, database):
+31 -12
View File
@@ -599,7 +599,7 @@ class NameDisplay:
# called to fill in each format flag.
# Dictionary is "code": ("expression", "keyword", "i18n-keyword")
d = {"t": ("raw_data[_TITLE]", "title",
_("title", "Person")),
_("Person|title")),
"f": ("raw_data[_FIRSTNAME]", "given",
_("given")),
"l": ("_raw_full_surname(raw_data[_SURNAME_LIST])", "surname",
@@ -607,17 +607,17 @@ class NameDisplay:
"s": ("raw_data[_SUFFIX]", "suffix",
_("suffix")),
"c": ("raw_data[_CALL]", "call",
_("call", "Name")),
_("Name|call")),
"x": ("(raw_data[_NICK] or raw_data[_CALL] or raw_data[_FIRSTNAME].split(' ')[0])",
"common",
_("common", "Name")),
_("Name|common")),
"i": ("''.join([word[0] +'.' for word in ('. ' +" +
" raw_data[_FIRSTNAME]).split()][1:])",
"initials",
_("initials")),
"m": ("_raw_primary_surname(raw_data[_SURNAME_LIST])",
"primary",
_("primary", "Name")),
_("Name|primary")),
"0m": ("_raw_primary_prefix_only(raw_data[_SURNAME_LIST])",
"primary[pre]",
_("primary[pre]")),
@@ -639,7 +639,7 @@ class NameDisplay:
_("notpatronymic")),
"r": ("_raw_nonprimary_surname(raw_data[_SURNAME_LIST])",
"rest",
_("rest", "Remaining names")),
_("Remaining names|rest")),
"p": ("_raw_prefix_surname(raw_data[_SURNAME_LIST])",
"prefix",
_("prefix")),
@@ -699,7 +699,7 @@ class NameDisplay:
# called to fill in each format flag.
# Dictionary is "code": ("expression", "keyword", "i18n-keyword")
d = {"t": ("title", "title",
_("title", "Person")),
_("Person|title")),
"f": ("first", "given",
_("given")),
"l": ("_raw_full_surname(raw_surname_list)", "surname",
@@ -707,14 +707,14 @@ class NameDisplay:
"s": ("suffix", "suffix",
_("suffix")),
"c": ("call", "call",
_("call", "Name")),
_("Name|call")),
"x": ("(nick or call or first.split(' ')[0])", "common",
_("common", "Name")),
_("Name|common")),
"i": ("''.join([word[0] +'.' for word in ('. ' + first).split()][1:])",
"initials",
_("initials")),
"m": ("_raw_primary_surname(raw_surname_list)", "primary",
_("primary", "Name")),
_("Name|primary")),
"0m":("_raw_primary_prefix_only(raw_surname_list)",
"primary[pre]", _("primary[pre]")),
"1m":("_raw_primary_surname_only(raw_surname_list)",
@@ -732,7 +732,7 @@ class NameDisplay:
"o": ("_raw_nonpatro_surname(raw_surname_list)", "notpatronymic",
_("notpatronymic")),
"r": ("_raw_nonprimary_surname(raw_surname_list)", "rest",
_("rest", "Remaining names")),
_("Remaining names|rest")),
"p": ("_raw_prefix_surname(raw_surname_list)", "prefix",
_("prefix")),
"q": ("_raw_single_surname(raw_surname_list)", "rawsurnames",
@@ -999,6 +999,8 @@ class NameDisplay:
1. if group name is defined, use that
2. if group name is defined for the primary surname, use that
3. use primary surname itself otherwise
4. if no primary surname, do we have a ma/patronymic surname ?
in this case, group name will be the ma/patronymic name.
:param pn: raw unserialized data of name
:type pn: tuple
@@ -1007,8 +1009,25 @@ class NameDisplay:
"""
if pn[_GROUP]:
return pn[_GROUP]
return db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
name = pn[_GROUP]
if not name:
# if we have no primary surname, perhaps we have a
# patronymic/matronynic name ?
srnme = pn[_ORIGINPATRO]
surname = []
for _surname in srnme:
if (_surname[_TYPE_IN_LIST][0] == _ORIGINPATRO
or _surname[_TYPE_IN_LIST][0] == _ORIGINMATRO):
# Yes, we have one.
surname = [_surname]
# name1 is the ma/patronymic name.
name1 = _raw_patro_surname_only(surname)
if name1 and len(srnme) == 1:
name = db.get_name_group_mapping(name1)
if not name:
name = db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
return name
def _make_fn(self, format_str, d, args):
"""
@@ -28,7 +28,6 @@ from ._hascitation import HasCitation
from ._allcitations import AllCitations
from ._changedsince import ChangedSince
from ._citationprivate import CitationPrivate
from ._hasattribute import HasAttribute
from ._hasgallery import HasGallery
from ._hasidof import HasIdOf
from ._hasnote import HasNote
@@ -51,7 +50,6 @@ editor_rule_list = [
AllCitations,
ChangedSince,
CitationPrivate,
HasAttribute,
HasGallery,
HasIdOf,
HasNote,
@@ -1,49 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008 Gary Burton
# Copyright (C) 2019 Matthias Kemmer
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# -------------------------------------------------------------------------
#
# Standard Python modules
#
# -------------------------------------------------------------------------
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# -------------------------------------------------------------------------
#
# Gramps modules
#
# -------------------------------------------------------------------------
from .._hasattributebase import HasAttributeBase
# -------------------------------------------------------------------------
#
# HasAttribute
#
# -------------------------------------------------------------------------
class HasAttribute(HasAttributeBase):
"""Rule that checks for a citation with a particular attribute"""
labels = [_('Citation attribute:'), _('Value:')]
name = _('Citations with the attribute <attribute>')
description = _("Matches citations with the attribute "
"of a particular value")
@@ -51,6 +51,7 @@ editor_rule_list = [
MediaPrivate,
MatchesFilter,
MatchesSourceConfidence,
HasMedia,
HasAttribute,
ChangedSince,
HasTag,
@@ -29,7 +29,6 @@ from ._disconnected import Disconnected
from ._everyone import Everyone
from ._familywithincompleteevent import FamilyWithIncompleteEvent
from ._hasaddress import HasAddress
from ._hasaddresstext import HasAddressText
from ._hasalternatename import HasAlternateName
from ._hasassociation import HasAssociation
from ._hasattribute import HasAttribute
@@ -126,7 +125,6 @@ editor_rule_list = [
IsBookmarked,
HasAlternateName,
HasAddress,
HasAddressText,
HasAssociation,
HasIdOf,
HasLDS,
@@ -1,54 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008 Brian G. Matherly
# Copyright (C) 2008 Jerome Rapinat
# Copyright (C) 2008 Benny Malengier
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# -------------------------------------------------------------------------
#
# Gramps modules
#
# -------------------------------------------------------------------------
from .. import Rule
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# -------------------------------------------------------------------------
#
# HasAddressText
#
# -------------------------------------------------------------------------
class HasAddressText(Rule):
"""Rule that checks for text in personal addresses"""
labels = [_('Text:')]
name = _('People with an address containing <text>')
description = _("Matches people with a personal address containing "
"the given text")
category = _('General filters')
allow_regex = True
def apply(self, db, person):
for address in person.get_address_list():
for string in address.get_text_data_list():
if self.match_substring(0, string):
return True
return False
@@ -45,7 +45,7 @@ class HasNameOf(Rule):
labels = [_('Given name:'),
_('Full Family name:'),
_('Title:', 'person'),
_('person|Title:'),
_('Suffix:'),
_('Call Name:'),
_('Nick Name:'),
@@ -52,7 +52,7 @@ class MatchesEventFilter(MatchesEventFilterBase):
name = _('Persons with events matching the <event filter>')
description = _("Matches persons who have events that match a certain"
" event filter")
category = _('General filters')
category = _('Event filters')
# we want to have this filter show event filters
namespace = 'Event'
@@ -37,10 +37,10 @@ import re
# Gramps modules
#
#-------------------------------------------------------------------------
from gramps.gen.errors import FilterError
from ....const import GRAMPS_LOCALE as glocale
from .. import Rule
from ....utils.place import conv_lat_lon
from gramps.gen.errors import FilterError
_ = glocale.translation.sgettext
@@ -81,13 +81,13 @@ class WithinArea(Rule):
"D.D8")
if self.latitude is None or self.longitude is None:
raise FilterError(_("Cannot use the filter 'within area'"),
_("The place you selected contains bad"
" coordinates. Please, run the tool "
"'clean input data'"))
_("The place you selected contains bad coordinates. "
"Please, run the tool 'clean input data'"))
return
val = self.list[1]
if isinstance(val, str):
val = re.sub(r"\D", "", val) # suppress all alpha characters
val = re.sub(r"\D", "", val) # suppress all alpha characters
value = int(val)
unit = int(self.list[2])
# earth perimeter in kilometers for latitude
@@ -25,7 +25,6 @@ Package providing filter rules for Gramps.
from ._allrepos import AllRepos
from ._hasidof import HasIdOf
from ._regexpidof import RegExpIdOf
from ._hasattribute import HasAttribute
from ._hasnoteregexp import HasNoteRegexp
from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf
from ._hasreferencecountof import HasReferenceCountOf
@@ -38,7 +37,6 @@ from ._hastag import HasTag
editor_rule_list = [
AllRepos,
HasAttribute,
HasIdOf,
RegExpIdOf,
HasNoteRegexp,
@@ -1,49 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008 Gary Burton
# Copyright (C) 2019 Matthias Kemmer
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# -------------------------------------------------------------------------
#
# Standard Python modules
#
# -------------------------------------------------------------------------
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# -------------------------------------------------------------------------
#
# Gramps modules
#
# -------------------------------------------------------------------------
from .._hasattributebase import HasAttributeBase
# -------------------------------------------------------------------------
#
# HasAttribute
#
# -------------------------------------------------------------------------
class HasAttribute(HasAttributeBase):
"""Rule that checks for a repository with a particular attribute"""
labels = [_('Repository attribute:'), _('Value:')]
name = _('Repositories with the attribute <attribute>')
description = _("Matches repositories with the attribute "
"of a particular value")
@@ -43,7 +43,7 @@ class HasRepo(Rule):
"""Rule that checks for a repo with a particular value"""
labels = [ _('Name:', 'repo'),
labels = [ _('repo|Name:'),
_('Type:'),
_('Address:'),
_('URL:'),
@@ -27,7 +27,6 @@ Package providing filter rules for Gramps.
from .._hassourcebase import HasSourceBase as HasSource
from ._allsources import AllSources
from ._hasattribute import HasAttribute
from ._hasgallery import HasGallery
from ._hasidof import HasIdOf
from ._regexpidof import RegExpIdOf
@@ -46,7 +45,6 @@ from ._hastag import HasTag
editor_rule_list = [
AllSources,
HasAttribute,
HasGallery,
HasIdOf,
RegExpIdOf,
@@ -1,49 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008 Gary Burton
# Copyright (C) 2019 Matthias Kemmer
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# -------------------------------------------------------------------------
#
# Standard Python modules
#
# -------------------------------------------------------------------------
from ....const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# -------------------------------------------------------------------------
#
# Gramps modules
#
# -------------------------------------------------------------------------
from .._hasattributebase import HasAttributeBase
# -------------------------------------------------------------------------
#
# HasAttribute
#
# -------------------------------------------------------------------------
class HasAttribute(HasAttributeBase):
"""Rule that checks for a source with a particular attribute"""
labels = [_('Source attribute:'), _('Value:')]
name = _('Sources with the attribute <attribute>')
description = _("Matches sources with the attribute "
"of a particular value")
@@ -98,9 +98,10 @@ class BaseTest(unittest.TestCase):
filter_.set_invert(invert)
stime = perf_counter()
results = filter_.apply(self.db)
if __debug__:
rulename = inspect.stack()[1][3]
print("%s: %.2f\n" % (rulename, perf_counter() - stime))
# if __debug__:
# frame = inspect.currentframe()
# rulename = frame.f_back.f_code.co_name
# print("%s: %.2f\n" % (rulename, perf_counter() - stime))
return set(results)
def test_Complex_1(self):
@@ -346,7 +347,7 @@ class BaseTest(unittest.TestCase):
"""
rule = ProbablyAlive(['1900'])
res = self.filter_with_rule(rule)
self.assertEqual(len(res), 766)
self.assertEqual(len(res), 733)
def test_RegExpName(self):
"""
+2 -2
View File
@@ -33,8 +33,8 @@ from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value): # enable deferred translations (see Python docs 22.1.3.4)
return value
class AttributeType(GrampsType):
+18 -18
View File
@@ -77,14 +77,14 @@ class Span:
self.precision = 2
self.negative = False
if self.valid:
if self.date1.calendar != Date.CAL_GREGORIAN:
self.date1 = self.date1.to_calendar("gregorian")
if self.date2.calendar != Date.CAL_GREGORIAN:
self.date2 = self.date2.to_calendar("gregorian")
if self.date1.sortval < self.date2.sortval:
self.date1 = date2
self.date2 = date1
self.negative = True
if self.date1.calendar != Date.CAL_GREGORIAN:
self.date1 = self.date1.to_calendar("gregorian")
if self.date2.calendar != Date.CAL_GREGORIAN:
self.date2 = self.date2.to_calendar("gregorian")
if self.date1.get_modifier() == Date.MOD_NONE:
if self.date2.get_modifier() == Date.MOD_NONE:
val = self.date1.sortval - self.date2.sortval
@@ -287,7 +287,7 @@ class Span:
elif self.date2.get_modifier() == Date.MOD_AFTER:
_repr = trans_text("less than") + " " + fdate12
elif self.date2.get_modifier() == Date.MOD_ABOUT:
_repr = trans_text("about", "age") + " " + fdate12p1
_repr = trans_text("age|about") + " " + fdate12p1
elif self.date2.is_compound():
start, stop = self.date2.get_start_stop_range()
start = Date(*start)
@@ -322,15 +322,15 @@ class Span:
_repr = trans_text("more than") + " " + fdate12
elif self.date1.get_modifier() == Date.MOD_ABOUT:
if self.date2.get_modifier() == Date.MOD_NONE:
_repr = trans_text("about", "age") + " " + fdate12p1
_repr = trans_text("age|about") + " " + fdate12p1
elif self.date2.get_modifier() == Date.MOD_BEFORE:
_repr = trans_text("more than about") + " " + fdate12p1
elif self.date2.get_modifier() == Date.MOD_AFTER:
_repr = trans_text("less than about") + " " + fdate12p1
elif self.date2.get_modifier() == Date.MOD_ABOUT:
_repr = trans_text("about", "age") + " " + fdate12p1
_repr = trans_text("age|about") + " " + fdate12p1
elif self.date2.is_compound():
_repr = trans_text("about", "age") + " " + fdate12p1
_repr = trans_text("age|about") + " " + fdate12p1
elif self.date1.is_compound():
if self.date2.get_modifier() == Date.MOD_NONE:
start, stop = self.date1.get_start_stop_range()
@@ -347,7 +347,7 @@ class Span:
elif self.date2.get_modifier() == Date.MOD_AFTER:
_repr = trans_text("less than") + " " + fdate12
elif self.date2.get_modifier() == Date.MOD_ABOUT:
_repr = trans_text("about", "age") + " " + fdate12p1
_repr = trans_text("age|about") + " " + fdate12p1
elif self.date2.is_compound():
start1, stop1 = self.date1.get_start_stop_range()
start2, stop2 = self.date2.get_start_stop_range()
@@ -606,13 +606,13 @@ class Date:
"Swedish"]
ui_calendar_names = [_("Gregorian", "calendar"),
_("Julian", "calendar"),
_("Hebrew", "calendar"),
_("French Republican", "calendar"),
_("Persian", "calendar"),
_("Islamic", "calendar"),
_("Swedish", "calendar")]
ui_calendar_names = [_("calendar|Gregorian"),
_("calendar|Julian"),
_("calendar|Hebrew"),
_("calendar|French Republican"),
_("calendar|Persian"),
_("calendar|Islamic"),
_("calendar|Swedish")]
def __init__(self, *source):
"""
@@ -1853,7 +1853,7 @@ class Date:
Lookup date quality keyword, even if translated.
"""
qualities = ["none", "estimated", "calculated"]
ui_qualities = [_("none", "date-quality"),
ui_qualities = [_("date-quality|none"),
_("estimated"), _("calculated")]
if quality.lower() in qualities:
return qualities.index(quality.lower())
@@ -1868,7 +1868,7 @@ class Date:
"""
mods = ["none", "before", "after", "about",
"range", "span", "textonly"]
ui_mods = [_("none", "date-modifier"),
ui_mods = [_("date-modifier|none"),
_("before"), _("after"), _("about"),
_("range"), _("span"), _("textonly")]
if modifier.lower() in mods:
+2 -2
View File
@@ -51,14 +51,14 @@ class EventRoleType(GrampsType):
_DATAMAP = [
(UNKNOWN, _("Unknown"), "Unknown"),
(CUSTOM, _("Custom"), "Custom"),
(PRIMARY, _("Primary", "Role"), "Primary"),
(PRIMARY, _("Role|Primary"), "Primary"),
(CLERGY, _("Clergy"), "Clergy"),
(CELEBRANT, _("Celebrant"), "Celebrant"),
(AIDE, _("Aide"), "Aide"),
(BRIDE, _("Bride"), "Bride"),
(GROOM, _("Groom"), "Groom"),
(WITNESS, _("Witness"), "Witness"),
(FAMILY, _("Family", "Role"), "Family"),
(FAMILY, _("Role|Family"), "Family"),
(INFORMANT, _("Informant"), "Informant"),
]
+48 -48
View File
@@ -131,8 +131,8 @@ class EventType(GrampsType):
WILL = 44
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value): # enable deferred translations (see Python docs 22.1.3.4)
return value
_MENU = [[_T_('Life Events'),
[BIRTH, BAPTISM, DEATH, BURIAL, CREMATION, ADOPT]],
@@ -208,52 +208,52 @@ class EventType(GrampsType):
]
_ABBREVIATIONS = {
BIRTH: _T_("b.", "birth abbreviation"),
DEATH: _T_("d.", "death abbreviation"),
MARRIAGE: _T_("m.", "marriage abbreviation"),
UNKNOWN: _T_("unkn.", "Unknown abbreviation"),
CUSTOM: _T_("cust.", "Custom abbreviation"),
ADOPT: _T_("adop.", "Adopted abbreviation"),
ADULT_CHRISTEN : _T_("a.chr.", "Adult Christening abbreviation"),
BAPTISM: _T_("bap.", "Baptism abbreviation"),
BAR_MITZVAH : _T_("bar.", "Bar Mitzvah abbreviation"),
BAS_MITZVAH : _T_("bat.", "Bat Mitzvah abbreviation"),
BLESS: _T_("bles.", "Blessing abbreviation"),
BURIAL: _T_("bur.", "Burial abbreviation"),
CAUSE_DEATH : _T_("d.cau.", "Cause Of Death abbreviation"),
CENSUS: _T_("cens.", "Census abbreviation"),
CHRISTEN: _T_("chr.", "Christening abbreviation"),
CONFIRMATION: _T_("conf.", "Confirmation abbreviation"),
CREMATION: _T_("crem.", "Cremation abbreviation"),
DEGREE: _T_("deg.", "Degree abbreviation"),
EDUCATION: _T_("edu.", "Education abbreviation"),
ELECTED: _T_("elec.", "Elected abbreviation"),
EMIGRATION: _T_("em.", "Emigration abbreviation"),
FIRST_COMMUN: _T_("f.comm.", "First Communion abbreviation"),
IMMIGRATION: _T_("im.", "Immigration abbreviation"),
GRADUATION: _T_("grad.", "Graduation abbreviation"),
MED_INFO: _T_("medinf.", "Medical Information abbreviation"),
MILITARY_SERV: _T_("milser.", "Military Service abbreviation"),
NATURALIZATION: _T_("nat.", "Naturalization abbreviation"),
NOB_TITLE: _T_("nob.", "Nobility Title abbreviation"),
NUM_MARRIAGES: _T_("n.o.mar.", "Number of Marriages abbreviation"),
OCCUPATION: _T_("occ.", "Occupation abbreviation"),
ORDINATION: _T_("ord.", "Ordination abbreviation"),
PROBATE: _T_("prob.", "Probate abbreviation"),
PROPERTY: _T_("prop.", "Property abbreviation"),
RELIGION: _T_("rel.", "Religion abbreviation"),
RESIDENCE: _T_("res.", "Residence abbreviation"),
RETIREMENT: _T_("ret.", "Retirement abbreviation"),
WILL: _T_("will.", "Will abbreviation"),
MARR_SETTL: _T_("m.set.", "Marriage Settlement abbreviation"),
MARR_LIC: _T_("m.lic.", "Marriage License abbreviation"),
MARR_CONTR: _T_("m.con.", "Marriage Contract abbreviation"),
MARR_BANNS: _T_("m.ban.", "Marriage Banns abbreviation"),
MARR_ALT: _T_("alt.mar.", "Alternate Marriage abbreviation"),
ENGAGEMENT: _T_("engd.", "Engagement abbreviation"),
DIVORCE: _T_("div.", "Divorce abbreviation"),
DIV_FILING: _T_("div.f.", "Divorce Filing abbreviation"),
ANNULMENT: _T_("annul.", "Annulment abbreviation")
BIRTH: _T_("birth abbreviation|b."),
DEATH: _T_("death abbreviation|d."),
MARRIAGE: _T_("marriage abbreviation|m."),
UNKNOWN: _T_("Unknown abbreviation|unkn."),
CUSTOM: _T_("Custom abbreviation|cust."),
ADOPT: _T_("Adopted abbreviation|adop."),
ADULT_CHRISTEN : _T_("Adult Christening abbreviation|a.chr."),
BAPTISM: _T_("Baptism abbreviation|bap."),
BAR_MITZVAH : _T_("Bar Mitzvah abbreviation|bar."),
BAS_MITZVAH : _T_("Bat Mitzvah abbreviation|bat."),
BLESS: _T_("Blessing abbreviation|bles."),
BURIAL: _T_("Burial abbreviation|bur."),
CAUSE_DEATH : _T_("Cause Of Death abbreviation|d.cau."),
CENSUS: _T_("Census abbreviation|cens."),
CHRISTEN: _T_("Christening abbreviation|chr."),
CONFIRMATION: _T_("Confirmation abbreviation|conf."),
CREMATION: _T_("Cremation abbreviation|crem."),
DEGREE: _T_("Degree abbreviation|deg."),
EDUCATION: _T_("Education abbreviation|edu."),
ELECTED: _T_("Elected abbreviation|elec."),
EMIGRATION: _T_("Emigration abbreviation|em."),
FIRST_COMMUN: _T_("First Communion abbreviation|f.comm."),
IMMIGRATION: _T_("Immigration abbreviation|im."),
GRADUATION: _T_("Graduation abbreviation|grad."),
MED_INFO: _T_("Medical Information abbreviation|medinf."),
MILITARY_SERV: _T_("Military Service abbreviation|milser."),
NATURALIZATION: _T_("Naturalization abbreviation|nat."),
NOB_TITLE: _T_("Nobility Title abbreviation|nob."),
NUM_MARRIAGES: _T_("Number of Marriages abbreviation|n.o.mar."),
OCCUPATION: _T_("Occupation abbreviation|occ."),
ORDINATION: _T_("Ordination abbreviation|ord."),
PROBATE: _T_("Probate abbreviation|prob."),
PROPERTY: _T_("Property abbreviation|prop."),
RELIGION: _T_("Religion abbreviation|rel."),
RESIDENCE: _T_("Residence abbreviation|res."),
RETIREMENT: _T_("Retirement abbreviation|ret."),
WILL: _T_("Will abbreviation|will."),
MARR_SETTL: _T_("Marriage Settlement abbreviation|m.set."),
MARR_LIC: _T_("Marriage License abbreviation|m.lic."),
MARR_CONTR: _T_("Marriage Contract abbreviation|m.con."),
MARR_BANNS: _T_("Marriage Banns abbreviation|m.ban."),
MARR_ALT: _T_("Alternate Marriage abbreviation|alt.mar."),
ENGAGEMENT: _T_("Engagement abbreviation|engd."),
DIVORCE: _T_("Divorce abbreviation|div."),
DIV_FILING: _T_("Divorce Filing abbreviation|div.f."),
ANNULMENT: _T_("Annulment abbreviation|annul.")
}
def __init__(self, value=None):
+4 -4
View File
@@ -73,12 +73,12 @@ class NameOriginType(GrampsType):
(UNKNOWN, _("Unknown"), "Unknown "),
(CUSTOM, _("Custom"), "Custom"),
(NONE, "", ""),
(INHERITED, _("Inherited", "Surname"), "Inherited"),
(GIVEN, _("Given", "Surname"), "Given"),
(TAKEN, _("Taken", "Surname"), "Taken"),
(INHERITED, _("Surname|Inherited"), "Inherited"),
(GIVEN, _("Surname|Given"), "Given"),
(TAKEN, _("Surname|Taken"), "Taken"),
(PATRONYMIC, _("Patronymic"), "Patronymic"),
(MATRONYMIC, _("Matronymic"), "Matronymic"),
(FEUDAL, _("Feudal", "Surname"), "Feudal"),
(FEUDAL, _("Surname|Feudal"), "Feudal"),
(PSEUDONYM, _("Pseudonym"), "Pseudonym"),
(PATRILINEAL, _("Patrilineal"), "Patrilineal"),
(MATRILINEAL, _("Matrilineal"), "Matrilineal"),
+2 -2
View File
@@ -79,8 +79,8 @@ class NoteType(GrampsType):
(CITATION, _('Citation'), "Citation"),
(REPORT_TEXT, _("Report"), "Report"),
(HTML_CODE, _("Html code"), "Html code"),
(TODO, _("To Do", "notetype"), "To Do"),
(LINK, _("Link", "notetype"), "Link"),
(TODO, _("notetype|To Do"), "To Do"),
(LINK, _("notetype|Link"), "Link"),
]
_DATAMAPIGNORE = [
+31 -1
View File
@@ -38,7 +38,7 @@ from ...datehandler import get_date_formats, set_format
from ...datehandler import parser as _dp
from ...datehandler import displayer as _dd
from ...datehandler._datedisplay import DateDisplayEn
from ...lib.date import Date, DateError, Today, calendar_has_fixed_newyear
from ...lib.date import Date, DateError, Today, calendar_has_fixed_newyear, Span
date_tests = {}
@@ -432,6 +432,36 @@ class ArithmeticDateTest(BaseDateTest):
self.assertEqual(val1, val2,
"'%s' should be '%s' but was '%s'" % (exp1, val2, val1))
#-------------------------------------------------------------------------
#
# SpanTest
#
#-------------------------------------------------------------------------
class SpanTest(BaseDateTest):
"""
Test spans.
"""
tests = [((2000, 1, 31), (2000, 1, 1), 30),
((1799, 11, 19), (8, 2, 18, Date.CAL_FRENCH), 10),
((8, 2, 18, Date.CAL_FRENCH), (1799, 11, 4), 5),
((8, 2, 18, Date.CAL_FRENCH), (3, 2, 9, Date.CAL_FRENCH), 1836)]
def test_evaluate(self):
for value1, value2, duration in self.tests:
date1 = self._get_date(value1)
date2 = self._get_date(value2)
span1 = Span(date1, date2)
self.assertEqual(int(span1), duration)
span2 = Span(date2, date1)
self.assertEqual(int(span2), -duration)
def _get_date(self, value):
date = Date()
if len(value) == 4:
date.set_calendar(value[3])
date.set_yr_mon_day(value[0], value[1], value[2])
return date
#-------------------------------------------------------------------------
#
# SwedishDateTest
+14 -9
View File
@@ -31,8 +31,8 @@ Provide merge capabilities for persons.
#-------------------------------------------------------------------------
from ..db import DbTxn
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
from ..errors import MergeError
_ = glocale.translation.sgettext
#-------------------------------------------------------------------------
#
@@ -49,11 +49,12 @@ class MergePersonQuery:
self.titanic = titanic
if self.check_for_spouse(self.phoenix, self.titanic):
raise MergeError(_("Spouses cannot be merged. To merge these "
"people, you must first break the relationship between them."))
"people, you must first break the relationship"
" between them."))
if self.check_for_child(self.phoenix, self.titanic):
raise MergeError(_("A parent and child cannot be merged. To merge "
"these people, you must first break the relationship between "
"them."))
"these people, you must first break the relatio"
"nship between them."))
def check_for_spouse(self, person1, person2):
"""Return if person1 and person2 are spouses of eachother."""
@@ -80,12 +81,12 @@ class MergePersonQuery:
main_family.merge(family)
for childref in family.get_child_ref_list():
child = self.database.get_person_from_handle(
childref.get_reference_handle())
childref.get_reference_handle())
if main_family_handle in child.parent_family_list:
child.remove_handle_references('Family', [family_handle])
else:
child.replace_handle_reference('Family', family_handle,
main_family_handle)
main_family_handle)
self.database.commit_person(child, trans)
if self.phoenix:
self.phoenix.remove_family_handle(family_handle)
@@ -143,7 +144,8 @@ class MergePersonQuery:
for family_handle in self.phoenix.get_parent_family_handle_list():
family = self.database.get_family_from_handle(family_handle)
if family.has_handle_reference('Person', old_handle):
family.replace_handle_reference('Person', old_handle,new_handle)
family.replace_handle_reference('Person', old_handle,
new_handle)
self.database.commit_family(family, trans)
family_merge_guard = False
@@ -182,7 +184,10 @@ class MergePersonQuery:
self.database.commit_family(family, trans)
parent_list.append(parents)
if self.database.get_default_handle() == old_handle:
self.database.set_default_person_handle(None)
hp_hdl = self.database.get_default_handle()
if (hp_hdl in (self.phoenix.get_handle(), self.titanic.get_handle())
and hp_hdl != self.phoenix.get_handle()):
self.database.set_default_person_handle(self.phoenix.get_handle())
self.database.remove_person(old_handle, trans)
return family_merge_ok
-2
View File
@@ -29,8 +29,6 @@ _type_map = {
'application/x-gedcom' : 'GEDCOM database',
'application/x-gramps-package': 'Gramps package',
'image/jpeg' : 'JPEG image',
'image/tiff' : 'TIFF image',
'image/png' : 'PNG image',
'application/pdf' : 'PDF document',
'text/rtf' : 'Rich Text File',
}
+8 -4
View File
@@ -113,6 +113,10 @@ else:
_GS_CMD = where_is("gs")
def esc(id_txt):
return id_txt.replace('"', '\\"')
#------------------------------------------------------------------------------
#
# GVOptions
@@ -575,7 +579,7 @@ class GVDocBase(BaseDoc, GVDoc):
text += ' URL="%s"' % url
text += " ]"
self.write(' "%s" %s;\n' % (node_id, text))
self.write(' "%s" %s;\n' % (esc(node_id), text))
def add_link(self, id1, id2, style="", head="", tail="", comment=""):
"""
@@ -583,7 +587,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_link().
"""
self.write(' "%s" -> "%s"' % (id1, id2))
self.write(' "%s" -> "%s"' % (esc(id1), esc(id2)))
if style or head or tail:
self.write(' [')
@@ -635,7 +639,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.add_samerank().
"""
self.write(' {rank=same "%s" "%s"}\n' % (id1, id2))
self.write(' {rank=same "%s" "%s"}\n' % (esc(id1), esc(id2)))
def rewrite_label(self, id, label):
"""
@@ -643,7 +647,7 @@ class GVDocBase(BaseDoc, GVDoc):
Implements GVDocBase.rewrite_label().
"""
self.write(' "%s" [label = "%s"]\n' % (id, label))
self.write(' "%s" [label = "%s"]\n' % (esc(id), label))
def start_subgraph(self, graph_id):
""" Implement GVDocBase.start_subgraph() """
+2 -2
View File
@@ -75,9 +75,9 @@ class PaperSize:
self.height = height
self.width = width
if self.name == 'Letter':
self.trans_pname = _('Letter', 'paper size')
self.trans_pname = _('paper size|Letter')
elif self.name == 'Legal':
self.trans_pname = _('Legal', 'paper size')
self.trans_pname = _('paper size|Legal')
elif self.name == 'Custom Size':
self.trans_pname = _('Custom Size')
else:
+1 -48
View File
@@ -460,8 +460,7 @@ class TreeDocBase(BaseDoc, TreeDoc):
if os.path.isfile(path):
if win():
path = path.replace('\\', '/')
self.write(level+1, 'image = {{%s}%s},\n' %
os.path.splitext(path))
self.write(level+1, 'image = {%s},\n' % path)
break # first image only
self.write(level, '}\n')
@@ -587,47 +586,6 @@ class TreeDocBase(BaseDoc, TreeDoc):
self.write_end()
#------------------------------------------------------------------------------
#
# TreeGraphDoc
#
#------------------------------------------------------------------------------
class TreeGraphDoc(TreeDocBase):
"""
TreeGraphDoc implementation that generates a .graph file.
"""
def write_start(self):
"""
Write the start of the document - nothing for a graph file.
"""
pass
def start_tree(self, option_list):
"""
Write the start of a tree - nothing for a graph file.
"""
pass
def end_tree(self):
"""
Write the end of a tree - nothing for a graph file.
"""
pass
def write_end(self):
"""
Write the end of the document - nothing for a graph file.
"""
pass
def close(self):
""" Implements TreeDocBase.close() """
TreeDocBase.close(self)
with open(self._filename, 'w', encoding='utf-8') as texfile:
texfile.write(self._tex.getvalue())
#------------------------------------------------------------------------------
#
# TreeTexDoc
@@ -695,11 +653,6 @@ if _LATEX_FOUND:
'mime' : "application/pdf",
'class': TreePdfDoc}]
FORMATS += [{'type' : "graph",
'ext' : "graph",
'descr': _("Graph File for genealogytree"),
'class': TreeGraphDoc}]
FORMATS += [{'type' : "tex",
'ext' : "tex",
'descr': _("LaTeX File"),
+7 -8
View File
@@ -40,8 +40,8 @@ from ...const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value): # enable deferred translations (see Python docs 22.1.3.4)
return value
#-------------------------------------------------------------------------
#
@@ -171,18 +171,17 @@ def add_living_people_option(menu, category,
living_people = EnumeratedListOption(_("Living People"), mode)
items = [(LivingProxyDb.MODE_INCLUDE_ALL,
_T_("Included, and all data", "'living people'"))]
_T_("'living people'|Included, and all data"))]
if process_names:
items += [
(LivingProxyDb.MODE_INCLUDE_FULL_NAME_ONLY,
_T_("Full names, but data removed", "'living people'")),
_T_("'living people'|Full names, but data removed")),
(LivingProxyDb.MODE_INCLUDE_LAST_NAME_ONLY,
_T_("Given names replaced, and data removed", "'living people'")),
_T_("'living people'|Given names replaced, and data removed")),
(LivingProxyDb.MODE_REPLACE_COMPLETE_NAME,
_T_("Complete names replaced, and data removed",
"'living people'"))]
_T_("'living people'|Complete names replaced, and data removed"))]
items += [(LivingProxyDb.MODE_EXCLUDE_ALL,
_T_("Not included", "'living people'"))]
_T_("'living people'|Not included"))]
living_people.set_items(items, xml_items=True) # for deferred translation
living_people.set_help(_("How to handle living people"))
menu.add_option(category, "living_people", living_people)
+3 -2
View File
@@ -46,8 +46,9 @@ from ...utils.file import media_path_full
from ..docgen import IndexMark, INDEX_TYPE_ALP
# _T_ is a gramps-defined keyword -- see po/update_po.py and po/genpot.sh
def _T_(value, context=''): # enable deferred translations
return "%s\x04%s" % (context, value) if context else value
def _T_(value):
""" enable deferred translations (see Python docs 22.1.3.4) """
return value
#-------------------------------------------------------------------------
#
+4 -3
View File
@@ -116,8 +116,9 @@ class Zipfile:
os.mkdir(fullname)
for name in self.get_files(names):
fullname = os.path.join(path, name)
with open(fullname, 'wb') as outfile:
outfile.write(self.zip_obj.read(name))
outfile = file(fullname, 'wb')
outfile.write(self.zip_obj.read(name))
outfile.close()
def extractfile(self, name):
"""
@@ -258,7 +259,7 @@ def available_updates():
if "new" in whattypes:
if (not config.get('behavior.do-not-show-previously-seen-addon-updates') or
plugin_dict["i"] not in config.get('behavior.previously-seen-addon-updates')):
addon_update_list.append((_("New", "updates"),
addon_update_list.append((_("updates|New"),
"%s/download/%s" %
(config.get("behavior.addons-url"),
plugin_dict["z"]),
+1 -1
View File
@@ -346,7 +346,7 @@ class ReferencedBySelectionProxyDb(ProxyDbBase):
for tag in note.text.get_tags():
if tag.name == 'Link':
if tag.value.startswith("gramps://"):
obj_class, prop, value = tag.value[9:].split("/")
obj_class, prop, value = tag.value[9:].split("/", 2)
if obj_class == "Media": # bug6493
obj_class = "Media"
if prop == "handle":
+20 -20
View File
@@ -2171,58 +2171,58 @@ class RelationshipCalculator:
elif gender == FEMALE:
return trans_text("wife")
else:
return trans_text("spouse", "gender unknown")
return trans_text("gender unknown|spouse")
elif spouse_type == self.PARTNER_EX_MARRIED:
if gender == MALE:
return trans_text("ex-husband")
elif gender == FEMALE:
return trans_text("ex-wife")
else:
return trans_text("ex-spouse", "gender unknown")
return trans_text("gender unknown|ex-spouse")
elif spouse_type == self.PARTNER_UNMARRIED:
if gender == MALE:
return trans_text("partner", "male,unmarried")
return trans_text("male,unmarried|partner")
elif gender == FEMALE:
return trans_text("partner", "female,unmarried")
return trans_text("female,unmarried|partner")
else:
return trans_text("partner", "gender unknown,unmarried")
return trans_text("gender unknown,unmarried|partner")
elif spouse_type == self.PARTNER_EX_UNMARRIED:
if gender == MALE:
return trans_text("ex-partner", "male,unmarried")
return trans_text("male,unmarried|ex-partner")
elif gender == FEMALE:
return trans_text("ex-partner", "female,unmarried")
return trans_text("female,unmarried|ex-partner")
else:
return trans_text("ex-partner", "gender unknown,unmarried")
return trans_text("gender unknown,unmarried|ex-partner")
elif spouse_type == self.PARTNER_CIVIL_UNION:
if gender == MALE:
return trans_text("partner", "male,civil union")
return trans_text("male,civil union|partner")
elif gender == FEMALE:
return trans_text("partner", "female,civil union")
return trans_text("female,civil union|partner")
else:
return trans_text("partner", "gender unknown,civil union")
return trans_text("gender unknown,civil union|partner")
elif spouse_type == self.PARTNER_EX_CIVIL_UNION:
if gender == MALE:
return trans_text("former partner", "male,civil union")
return trans_text("male,civil union|former partner")
elif gender == FEMALE:
return trans_text("former partner", "female,civil union")
return trans_text("female,civil union|former partner")
else:
return trans_text("former partner", "gender unknown,civil union")
return trans_text("gender unknown,civil union|former partner")
elif spouse_type == self.PARTNER_UNKNOWN_REL:
if gender == MALE:
return trans_text("partner", "male,unknown relation")
return trans_text("male,unknown relation|partner")
elif gender == FEMALE:
return trans_text("partner", "female,unknown relation")
return trans_text("female,unknown relation|partner")
else:
return trans_text("partner", "gender unknown,unknown relation")
return trans_text("gender unknown,unknown relation|partner")
else:
# here we have spouse_type == self.PARTNER_EX_UNKNOWN_REL
# or other not catched types
if gender == MALE:
return trans_text("former partner", "male,unknown relation")
return trans_text("male,unknown relation|former partner")
elif gender == FEMALE:
return trans_text("former partner", "female,unknown relation")
return trans_text("female,unknown relation|former partner")
else:
return trans_text("former partner", "gender unknown,unknown relation")
return trans_text("gender unknown,unknown relation|former partner")
def connect_db_signals(self, dbstate):
"""
+2
View File
@@ -142,6 +142,8 @@ class ProbablyAlive:
# person died more than MAX after current year
if death_date.is_valid():
birth_date = death_date.copy_offset_ymd(year=-self.MAX_AGE_PROB_ALIVE)
else:
birth_date = death_date
explain = _("death date")
if not death_date and birth_date:
+10 -6
View File
@@ -324,12 +324,16 @@ class Callback:
return
# Check signal exists
frame = inspect.currentframe()
c_frame = frame.f_back
c_code = c_frame.f_code
frame_info = (c_code.co_filename, c_frame.f_lineno, c_code.co_name)
if signal_name not in self.__signal_map:
self._warn("Attempt to emit to unknown signal: %s\n"
" from: file: %s\n"
" line: %d\n"
" func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
% ((str(signal_name), ) + frame_info))
return
# check that the signal is not already being emitted. This prevents
@@ -340,7 +344,7 @@ class Callback:
" from: file: %s\n"
" line: %d\n"
" func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
% ((str(signal_name), ) + frame_info))
return
try:
@@ -358,7 +362,7 @@ class Callback:
" from: file: %s\n"
" line: %d\n"
" func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
% ((str(signal_name), ) + frame_info))
return
# type check arguments
@@ -369,7 +373,7 @@ class Callback:
" from: file: %s\n"
" line: %d\n"
" func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
% ((str(signal_name), ) + frame_info))
return
if len(args) > 0:
@@ -379,7 +383,7 @@ class Callback:
" from: file: %s\n"
" line: %d\n"
" func: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
% ((str(signal_name), ) + frame_info))
return
if arg_types is not None:
@@ -391,7 +395,7 @@ class Callback:
" line: %d\n"
" func: %s\n"
" arg passed was: %s, type of arg passed %s, type should be: %s\n"
% ((str(signal_name), ) + inspect.stack()[1][1:4] +\
% ((str(signal_name), ) + frame_info +\
(args[i], repr(type(args[i])), repr(arg_types[i]))))
return
if signal_name in self.__callback_map:
+1 -1
View File
@@ -49,7 +49,7 @@ class CSVTab(TabbedDoc):
else:
self.filename = filename
self.f = open(self.filename, "w",
self.f = open(self.filename, "w", newline='',
encoding='utf_8_sig' if win() else 'utf_8')
self.writer = csv.writer(self.f)
+15 -55
View File
@@ -117,7 +117,7 @@ _LOCALE_NAMES = {
_RTL_LOCALES = ('ar', 'he')
# locales with less than 70% currently translated
INCOMPLETE_TRANSLATIONS = ('ar', 'bg', 'he', 'sq', 'ta', 'tr')
INCOMPLETE_TRANSLATIONS = ('ar', 'bg', 'sq', 'ta', 'tr', 'zh_HK', 'zh_TW')
def _check_mswin_locale(locale):
msloc = None
@@ -525,6 +525,8 @@ class GrampsLocale:
# with locale instead of gettext. Win32 doesn't support bindtextdomain.
if self.localedir:
if not sys.platform == 'win32':
# bug12278, _build_popup_ui() under linux and macOS
locale.textdomain(self.localedomain)
locale.bindtextdomain(self.localedomain, self.localedir)
else:
self._win_bindtextdomain(self.localedomain.encode('utf-8'),
@@ -1027,8 +1029,8 @@ class Lexeme(str):
Python code::
_ = lexgettext
dec = _("|December", "localized lexeme inflections")
xmas = _("|Christmas", "lexeme")
dec = _("localized lexeme inflections||December")
xmas = _("lexeme||Christmas")
text = _("{holiday} is celebrated in {month}".format(
holiday=xmas, month=dec))
greeting = _("Merry {holiday}!").format(holiday=xmas)
@@ -1142,33 +1144,26 @@ class GrampsTranslations(gettext.GNUTranslations):
Overrides and extends gettext.GNUTranslations. See the Python gettext
"Class API" documentation for how to use this.
"""
CONTEXT = "%s\x04%s"
def language(self):
"""
Return the target languge of this translations object.
"""
return self._language
def gettext(self, msgid, context=''):
def gettext(self, msgid):
"""
Obtain translation of gettext, return a unicode object
:param msgid: The string to translated.
:type msgid: unicode
:param context: The message context.
:type context: unicode
:returns: Translation or the original.
:rtype: unicode
"""
# If context=="" and msgid =="" then gettext will return po file header
# If msgid =="" then gettext will return po file header
# and that's not what we want.
if len((context + msgid).strip()) == 0:
if len(msgid.strip()) == 0:
return msgid
if context:
return self.pgettext(context, msgid)
else:
return gettext.GNUTranslations.gettext(self, msgid)
return gettext.GNUTranslations.gettext(self, msgid)
def ngettext(self, singular, plural, num):
"""
@@ -1188,7 +1183,7 @@ class GrampsTranslations(gettext.GNUTranslations):
"""
return gettext.GNUTranslations.ngettext(self, singular, plural, num)
def sgettext(self, msgid, context='', sep='|'):
def sgettext(self, msgid, sep='|'):
"""
Strip the context used for resolving translation ambiguities.
@@ -1199,22 +1194,18 @@ class GrampsTranslations(gettext.GNUTranslations):
:param msgid: The string to translated.
:type msgid: unicode
:param context: The message context.
:type context: unicode
:param sep: The separator marking the context.
:type sep: unicode
:returns: Translation or the original with context stripped.
:rtype: unicode
"""
if '\x04' in msgid: # Deferred translation
context, msgid = msgid.split('\x04')
msgval = self.gettext(msgid, context)
msgval = self.gettext(msgid)
if msgval == msgid:
sep_idx = msgid.rfind(sep)
msgval = msgid[sep_idx+1:]
return msgval
def lexgettext(self, msgid, context=''):
def lexgettext(self, msgid):
"""
Extract all inflections of the same lexeme,
stripping the '|'-separated context using :meth:`~sgettext`
@@ -1233,28 +1224,13 @@ class GrampsTranslations(gettext.GNUTranslations):
:param msgid: The string to translated.
:type msgid: unicode
:param context: The message context.
:type context: unicode
:returns: Translation or the original with context stripped.
:rtype: unicode (for option (1)) / Lexeme (option (2))
"""
variants = self.sgettext(msgid, context).split('|')
variants = self.sgettext(msgid).split('|')
return Lexeme([v.split('=') for v in variants]
) if len(variants) > 1 else variants[0]
def pgettext(self, context, message):
"""
Copied from python 3.8
"""
ctxt_msg_id = self.CONTEXT % (context, message)
missing = object()
tmsg = self._catalog.get(ctxt_msg_id, missing)
if tmsg is missing:
if self._fallback:
return self._fallback.pgettext(context, message)
return message
return tmsg
class GrampsNullTranslations(gettext.NullTranslations):
"""
Extends gettext.NullTranslations to provide the sgettext method.
@@ -1262,16 +1238,8 @@ class GrampsNullTranslations(gettext.NullTranslations):
Note that it's necessary for msgid to be unicode. If it's not,
neither will be the returned string.
"""
def gettext(self, msgid, context=''):
if context:
return self.pgettext(context, msgid)
else:
return gettext.NullTranslations.gettext(self, msgid)
def sgettext(self, msgid, context='', sep='|'):
if '\x04' in msgid: # Deferred translation
context, msgid = msgid.split('\x04')
msgval = self.gettext(msgid, context)
def sgettext(self, msgid, sep='|'):
msgval = self.gettext(msgid)
if msgval == msgid:
sep_idx = msgid.rfind(sep)
msgval = msgid[sep_idx+1:]
@@ -1284,11 +1252,3 @@ class GrampsNullTranslations(gettext.NullTranslations):
The null translation returns the raw msgids, which are in English
"""
return "en"
def pgettext(self, context, message):
"""
Copied from python 3.8
"""
if self._fallback:
return self._fallback.pgettext(context, message)
return message
+2 -2
View File
@@ -161,12 +161,12 @@ def image_size(source):
:returns: a tuple consisting of the width and height
"""
from gi.repository import GdkPixbuf
from gi.repository import GLib
from gi.repository import GObject
try:
img = GdkPixbuf.Pixbuf.new_from_file(source)
width = img.get_width()
height = img.get_height()
except GLib.GError:
except GObject.GError:
width = 0
height = 0
return (width, height)
+4 -4
View File
@@ -51,14 +51,14 @@ Keyword translation interface
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
KEYWORDS = [("title", "t", _("Title", "Person"), _("TITLE", "Person")),
KEYWORDS = [("title", "t", _("Person|Title"), _("Person|TITLE")),
("given", "f", _("Given"), _("GIVEN")),
("surname", "l", _("Surname"), _("SURNAME")),
("call", "c", _("Call", "Name"), _("CALL", "Name")),
("common", "x", _("Common", "Name"), _("COMMON", "Name")),
("call", "c", _("Name|Call"), _("Name|CALL")),
("common", "x", _("Name|Common"), _("Name|COMMON")),
("initials", "i", _("Initials"), _("INITIALS")),
("suffix", "s", _("Suffix"), _("SUFFIX")),
("primary", "m", _("Primary", "Name"), _("PRIMARY")),
("primary", "m", _("Name|Primary"), _("PRIMARY")),
("primary[pre]", "0m", _("Primary[pre]"), _("PRIMARY[PRE]")),
("primary[sur]", "1m", _("Primary[sur]"), _("PRIMARY[SUR]")),
("primary[con]", "2m", _("Primary[con]"), _("PRIMARY[CON]")),
+21 -44
View File
@@ -2,7 +2,6 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2013 John Ralls <jralls@ceridwen.us>
# Copyright (C) 2020 Nick Hall <nick-h@gramps-project.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -36,25 +35,6 @@ class ResourcePath:
It should be called only by const.py; other code should retrieve the
paths from there.
Attempt to derive the resource path from the package path assuming that
one of the three main installation schemes has been used.
The package path will be one of the following:
<prefix>/lib/pythonX.Y/site-packages
<prefix>\Lib\site-packages
<home>/lib/python
<userbase>/lib/pythonX.Y/site-packages
<userbase>\PythonXY\site-packages
Where <prefix>, <home> and <userbase> are the resource paths used in the
Prefix, Home and User installation schemes.
The use of the command line option "--install-data" in the setup script
is no longer supported.
"""
instance = None
def __new__(cls):
@@ -67,9 +47,9 @@ class ResourcePath:
def __init__(self):
if self.initialized:
return
package_path = os.path.abspath(os.path.join(os.path.dirname(
__file__), '..', "..", ".."))
installed = not os.path.exists(os.path.join(package_path, '.git'))
resource_file = os.path.join(os.path.abspath(os.path.dirname(
__file__)), 'resource-path')
installed = os.path.exists(resource_file)
if installed:
test_path = os.path.join("gramps", "authors.xml")
else:
@@ -79,30 +59,27 @@ class ResourcePath:
if (tmp_path and os.path.exists(os.path.join(tmp_path, test_path))):
resource_path = tmp_path
elif installed:
base_path = None
head, tail = os.path.split(package_path)
if tail in ('site-packages', 'dist-packages'):
# Prefix or User installation scheme
head, tail = os.path.split(head)
if tail.startswith('python'):
base_path, tail = os.path.split(head)
elif tail == 'Lib' or tail.startswith('Python'):
base_path = head
elif tail == 'python':
# Home installation scheme
base_path, tail = os.path.split(head)
if base_path is not None:
resource_path = os.path.join(base_path, 'share')
else:
LOG.error("Unable to determine resource path")
try:
with open(resource_file, encoding='utf-8',
errors='strict') as fp:
resource_path = fp.readline()
except UnicodeError as err:
LOG.exception("Encoding error while parsing resource path", err)
sys.exit(1)
except IOError as err:
LOG.exception("Failed to open resource file", err)
sys.exit(1)
if not os.path.exists(os.path.join(resource_path, test_path)):
LOG.error("Resource Path %s is invalid", resource_path)
sys.exit(1)
else:
# Let's try to run from source without env['GRAMPS_RESOURCES']:
resource_path = package_path
if (not os.path.exists(os.path.join(resource_path, test_path))):
LOG.error("Resource Path %s is invalid", resource_path)
sys.exit(1)
resource_path = os.path.join(os.path.abspath(os.path.dirname(
__file__)), '..', "..", "..")
test_path = os.path.join("data", "authors.xml")
if (not os.path.exists(os.path.join(resource_path, test_path))):
LOG.error("Unable to determine resource path")
sys.exit(1)
resource_path = os.path.abspath(resource_path)
if installed:

Some files were not shown because too many files have changed in this diff Show More