Compare commits

..

312 Commits

Author SHA1 Message Date
Jérôme Rapinat
cf88fef1e8 make 4.1.2 release 2015-02-27 17:08:58 +01:00
Jérôme Rapinat
94f28daf03 updated existing Chinese translation 2015-02-27 16:23:31 +01:00
Jérôme Rapinat
bd8c08596b update NEWS before 4.1.2 release 2015-02-27 16:10:57 +01:00
Anthony Fok
d43ff61913 Chinese (simplified) translation update, for gramps41 2015-02-26 14:36:07 -08:00
Nick Hall
307bed5e44 Convert update addons dialog to no longer be a ManagedWindow 2015-02-26 21:30:52 +00:00
Nick Hall
e7cf8fe70c Remove place title from default view columns 2015-02-26 21:17:37 +00:00
Jérôme Rapinat
c390a0f490 New translation: Icelandic 2015-02-25 08:54:46 +01:00
Tim G L Lyons
8cc86bd153 import statement missing 2015-02-25 01:07:41 +00:00
kulath
2cd23356b4 8134: Fix pickle upgrade of python2 strings to python3 str
Move load of metadata (which can also have pickle upgrade errors) and
make zip backup for pickle or schema upgrade.
2015-02-24 22:41:37 +00:00
Nick Hall
03579aa4a1 Fix schema upgrade from 15 to 16 with python3 2015-02-23 19:19:57 +00:00
Paul Franklin
7f9686ba8d 8316: Family with children but no parents is lost on filtered export 2015-02-23 08:54:14 -08:00
John Ralls
f827fff712 Update PyICU to 1.8
1.5 won't compile against ICU-5.4.
2015-02-22 12:50:54 -08:00
Nick Hall
27648255c0 8134: Fix pickle upgrade of python2 strings to python3 str 2015-02-22 15:23:49 +00:00
leonhaeuser
f0b022564b update German translation 2015-02-22 02:09:16 +01:00
Jérôme Rapinat
2727044bc7 update french translation 2015-02-21 15:28:48 +01:00
Jérôme Rapinat
04bc04896b two new filter rules were missing on template, 'intltool-update -m' 2015-02-21 15:25:07 +01:00
Nemeséri Lajos
44d8c31bc9 Update Hungarian translation 2015-02-21 11:20:51 +01:00
leonhaeuser
1c4e91e891 update German translation 2015-02-19 01:35:48 +01:00
Nick Hall
09caa90530 Use place displayer in relationship view 2015-02-18 22:22:27 +00:00
noirauds
68a0a0d087 geography: 7149: some minor problems. 2015-02-18 18:27:05 +01:00
Jérôme Rapinat
e5701e9641 typo 2015-02-18 14:10:07 +01:00
Jérôme Rapinat
e2e75559c2 update french translation 2015-02-18 14:07:10 +01:00
Jérôme Rapinat
c489c8ec34 update template 2015-02-18 13:56:51 +01:00
noirauds
8e11d1bd64 geographie: 7149 : Views into Geography should not always use the last option set by the user 2015-02-18 09:30:27 +01:00
noirauds
5c71a35aea geography: 7948 : Add path selector to the text entry for tile cache 2015-02-17 20:30:03 +01:00
kulath
a99196dde5 0008347: GEDCOM import of embedded notes attached to media does not work 2015-02-16 22:53:34 +00:00
Jérôme Rapinat
7c71e098f1 fix typos, thank you phcook 2015-02-16 20:01:44 +01:00
leonhaeuser
db04225e83 update German translation 2015-02-16 02:33:09 +01:00
noirauds
40686d50ef geography - forgot to suppress debug lines 2015-02-15 23:42:42 +01:00
noirauds
66b0d389c7 geography - new feature (8327) Moving around the map using arrow keys and possibility to zoom from keyboard/keypad with the +/- keys 2015-02-15 23:00:37 +01:00
Nick Hall
4ff5d6460e 8353: Fix default size of detached gramplet window 2015-02-12 19:36:25 +00:00
Nick Hall
77c530f5ed 8351: Allow gramplets detached from the dashboard to fill the window 2015-02-12 19:15:07 +00:00
Nick Hall
db138e646c 8350: Fix spacing in export assistant file chooser 2015-02-11 22:52:37 +00:00
Nick Hall
bef5ed6386 Swap description and main participants columns
Change column order introduced in  due to adverse comments
on mailing list.
2015-02-11 21:26:11 +00:00
noirauds
dadb588d83 geography : bug 7615 : Filter panel on geography view displays improperly 2015-02-11 21:17:19 +01:00
Nick Hall
55a20ab1e3 7930: Fix removing rows in flat list views 2015-02-09 17:26:49 +00:00
Nick Hall
71e2077805 8344: Ensure key is correct type when updating reference map 2015-02-09 15:44:32 +00:00
Zdeněk Hataš
b151f17117 czech translation update 2015-02-06 14:24:30 +01:00
kulath
3b5e3cbe6e 0007014: Errors handling owner/submitter information in GEDCOM files.
Only import researcher from GEDCOM or XML if the family tree was
originally empty.
2015-02-02 18:56:56 +00:00
Nick Hall
55c7becb68 Update import to cope with missing place name and type 2015-02-02 17:45:22 +00:00
Nick Hall
643ffcb479 8233: Fix bad handle in explanation note for unknown event 2015-02-01 14:44:48 +00:00
leonhaeuser
218ea80d2b update German translation 2015-01-31 17:35:08 +01:00
Nick Hall
2d27ada429 Remove check for empty place title 2015-01-30 22:12:49 +00:00
Paul Franklin
9cf8a940f9 8320: Detailed descendent report crashes 2015-01-28 09:44:34 -08:00
leonhaeuser
80ace16550 update German translation 2015-01-28 17:36:55 +01:00
Nick Hall
4ffce0b915 7860: Update place sidebar filter 2015-01-27 23:01:33 +00:00
Nick Hall
a16bc2de9c 7860: Add new place HasTitle rule 2015-01-27 23:01:32 +00:00
Nick Hall
ce9723eec8 7860: Add new place HasData rule 2015-01-27 23:01:30 +00:00
Nick Hall
24df17cc2f 8058: New place reference editor
This allows standard "add" and "share" buttons to be used in the place
reference embedded list.
2015-01-27 19:36:27 +00:00
leonhaeuser
6b50f932db update German translation 2015-01-27 15:00:45 +01:00
Nick Hall
3781e75d60 8056: Activate drag and drop on "enclosed by" tab 2015-01-26 22:44:53 +00:00
Nick Hall
4396a09081 8242: Put places in data.gramps into a hierarchy 2015-01-24 19:33:30 +00:00
leonhaeuser
3e19b099f8 update German translation 2015-01-24 15:05:31 +01:00
Nick Hall
254a605543 7860: Rename "Name" to "Title" 2015-01-23 21:41:03 +00:00
Nick Hall
f16772c393 8057: Remove auto-update of place titles 2015-01-23 19:52:41 +00:00
Nick Hall
415a843be9 7942: Implement place displayer 2015-01-23 19:16:16 +00:00
Nick Hall
82646d0d67 7533: Check for active person in session log gramplet 2015-01-21 23:03:36 +00:00
Nick Hall
db352c5c4c 7844: Check that the mediapath is not set to None 2015-01-21 21:43:14 +00:00
Nick Hall
ac62a978e0 7770: Always display main participants 2015-01-21 18:45:18 +00:00
Nick Hall
d0a83dd39c 7299: Fix bug when family has no parents 2015-01-21 17:32:31 +00:00
Jérôme Rapinat
53b415c0d0 8062 8288: Keywords entry in gramps.desktop does not end with ';' 2015-01-17 16:24:22 +01:00
Espen Berg
2f4767fd6f Done with Norwegian bokmål translation 2015-01-09 20:02:53 +01:00
Espen Berg
d230948c6a Some revision of Norwegian bokmål translation 2015-01-08 22:31:09 +01:00
Espen Berg
a8de78c452 Some revision of Norwegian bokmål translation 2015-01-08 21:11:22 +01:00
kulath
0e3c3cdbdd 0008283: GEDCOM export does not export media attached to citations. Fix
for gramps41
2015-01-08 18:05:28 +00:00
Espen Berg
bff873f174 Some revision of Norwegian bokmål translation 2015-01-07 22:16:14 +01:00
Peter Landgren
417d379726 Updated Swedish translation 2015-01-06 18:37:13 +01:00
leonhaeuser
88115561cc update German translation 2015-01-04 22:21:14 +01:00
Doug Blank
563ffe22b4 Records Gramplet uses wrong text 2015-01-03 11:00:44 -08:00
Josip
3f70f716c4 6548: 'Available Gramps Updates for Addons' window not on top 2015-01-03 17:48:57 +01:00
Doug Blank
25fbf57219 Fixes for struct tests to pass: method name changes, and removed tests for struct assignment 2015-01-03 10:35:43 -05:00
Craig Anderson
eebcd5c8a2 6355: Report event attribute name is not translated 2015-01-02 09:17:32 -08:00
Jérôme Rapinat
20917e4b09 8169 8267 typo: Glib should be GLib ... 2015-01-02 12:10:18 +01:00
Jérôme Rapinat
a166ed9ca4 New year... 2015-01-02 10:23:25 +01:00
Sigmund Lorentsen
492a40b5b4 Update and merge Norwegian Nynorsk translation 2015-01-02 10:22:08 +01:00
Paul Franklin
516d716b83 specify SVG font size is in points, for stupid viewers 2014-12-30 10:52:47 -08:00
Paul Franklin
de8efc9d12 8240: can't disable box shadow in SVG descendant tree 2014-12-30 10:36:05 -08:00
Ondrej Krč-Jediný
079abd1df3 merge request ; git clone http://git.code.sf.net/u/ondrisko/gramps ; update slovak translation 2014-12-29 18:04:22 +01:00
Josip
42a56bf31b 7851: translations don't show in many labels, buttons, and other elements, Windows only
Added fix for Python3
2014-12-28 22:16:32 +01:00
Paul Franklin
236261e2db 8257: Crash when mixed "inflected" and "non inflected" months 2014-12-24 12:34:57 -08:00
Fedir Zinchuk
7fa12faed2 Update Ukrainian translation for 4.1 2014-12-22 13:21:47 +02:00
Fedir Zinchuk
032051c093 Update Hebrew month parser, for Ukrainian dateparset 2014-12-21 19:33:09 +02:00
Fedir Zinchuk
ad961132eb more string update, remove display_OLD() 2014-12-21 17:13:38 +02:00
Fedir Zinchuk
c248767c1d Fix parsing for the span date in Ukrainian language, was conflict with b.c.e. string 2014-12-21 15:45:57 +02:00
Fedir Zinchuk
8497e8c4b2 use inflection for Ukrainian dates 2014-12-21 14:54:33 +02:00
Fedir Zinchuk
05da780166 Update Ukrainian translation for 4.1 2014-12-19 15:19:42 +02:00
Paul Franklin
03ab81e2d1 8148: Turkish language updates 2014-12-17 20:25:17 -08:00
Paul Franklin
205529f448 8185: Gramps freeze after defining a report stile with German cm values 2014-12-17 19:57:43 -08:00
Paul Franklin
10c62800ef 8237: descendant tree graphical report, syntax error in svg output 2014-12-17 19:39:31 -08:00
Matti Niemelä
61625e2a9b update gramps41 Finnish translation 2014-12-15 17:26:10 -08:00
kulath
b8b61521d8 Fix 0008234: part (2) Various problems with
docgen.TextDoc.add_media_object part (2) for gramps41 branch
2014-12-16 00:27:32 +00:00
kulath
a1402552e2 Merge branch 'maintenance/gramps41' of ssh://kulath@git.code.sf.net/p/gramps/source into maintenance/gramps41 2014-12-14 18:03:36 +00:00
kulath
4722ce2e7f Fix 0008234: Various problems with docgen.TextDoc.add_media_object part
(1) for gramps41 branch
2014-12-14 17:59:28 +00:00
Zdeněk Hataš
b86bbf44d1 czech translation update 2014-12-14 12:51:31 +01:00
leonhaeuser
49f53a1fe7 fix German grammer bug [8231] 2014-12-13 22:19:31 +01:00
Paul Franklin
1c8cc6e33f cover pathological case (perhaps from privacy proxy) 2014-12-12 11:07:18 -08:00
Paul Franklin
040c9010d2 merge trunk-master Finnish translation into gramps41 2014-12-12 09:06:12 -08:00
leonhaeuser
c9a19a5954 Fix German typo Bug [8226] 2014-12-12 15:36:21 +01:00
Paul Franklin
bda98e7b1e make a new template (gramps41 gramps.pot) 2014-12-11 19:49:39 -08:00
Paul Franklin
c035dd3df4 typo 2014-12-11 11:03:12 -08:00
Nick Hall
2de3ea43c3 8029: Suppress warnings in UndoableEntry widget
Bug 644927 - Support out parameters in signals
https://bugzilla.gnome.org/show_bug.cgi?id=644927
2014-12-10 22:25:42 +00:00
Jérôme Rapinat
939eb423a6 typo on french translation 2014-12-09 21:33:34 +01:00
Jérôme Rapinat
0fe8bd5e4a update french translation 2014-12-06 18:13:04 +01:00
Josip
acb7f3cded 7865: Closing detached gramplet causes python to crash 2014-12-01 18:44:05 +01:00
Nick Hall
d84109f435 7866: Crash on Ancestry.com .ged import; consistent. 2014-12-01 18:09:33 +01:00
Paul Franklin
e84bf70347 ignore a zero day and its delimiter, in numerical date format 2014-11-24 17:15:01 -08:00
kulath
d6f7cfcd20 Fix error in previous commit (spurious comments) 2014-11-24 18:35:34 +00:00
kulath
a9640f327f 8196: Spurious spaces in CLI List Family Trees, tab delimited output.
Print statements changed to assemble the whole line before output.
2014-11-24 18:15:27 +00:00
leonhaeuser
80be25adae improved German translation 2014-11-23 23:51:36 +01:00
Josip
1030d1627e Croatian translation 2014-11-23 22:11:32 +01:00
leonhaeuser
d2ffb0484a update German translation 2014-11-23 15:37:38 +01:00
Josip
7b6dede9ea 10f47d: Serbian should be ready for Windows OS and LOCALE_NAMES mapping
mapping should be on of:
'Serbian (Latin)_Bosnia and Herzegovina.1250'
'Serbian (Latin)_Serbia.1250'
'Serbian (Latin)_Serbia and Montenegro (Former).1250'
'Serbian (Cyrillic)_Bosnia and Herzegovina.1251'
'Serbian (Cyrillic)_Serbia.1251'
'Serbian (Cyrillic)_Serbia and Montenegro (Former).1251'
2014-11-23 14:14:38 +01:00
Paul Franklin
e4061d605c make a new template (gramps.pot) 2014-11-22 16:20:22 -08:00
Paul Franklin
4afc4933c2 8175: date inflections in _datahandler.py 2014-11-22 16:05:04 -08:00
Paul Franklin
14ed0c4d16 8184: regression: Complete Individual report has some untranslated output 2014-11-20 10:03:55 -08:00
Paul Franklin
1a8c73212e add a few date examples (near the top of the list) 2014-11-13 10:13:47 -08:00
Zdeněk Hataš
18ef02d424 czech translation update 2014-11-10 10:34:30 +01:00
Josip
85b4c25d02 Fix esperanto duplicate message definition 2014-11-08 13:33:57 +01:00
Josip
e0b44ff355 8157: ImageMetadata doesn't show metadata 2014-11-07 19:18:19 +01:00
Pier Luigi Cinquantini
9a00d5533d improvements on Esperanto translation 2014-11-06 14:54:13 +01:00
Paul Franklin
d349f247ea 5150: new Event types are saved as a disordered list 2014-11-04 07:27:39 -08:00
Paul Franklin
f44e84f054 new gramps41 template (gramps.pot) 2014-11-03 20:22:33 -08:00
Nick Hall
0a7b8fb6ee 7604: Fix error setting gramplet tab label 2014-11-03 21:51:24 +00:00
Jérôme Rapinat
85914babdf 8126: Warnings: deprecated Gtk properties and errors loading theme icon
Fix: database manager dialog is inconsistent for older gtk+3 versions
2014-11-02 13:49:40 +01:00
Josip
448986875b Fix typo on commit 12ed5d 2014-11-01 20:14:06 +01:00
leonhaeuser
b81f80bace update German translation 2014-10-31 14:09:59 +01:00
Josip
12ed5deb24 7857: gramps fails to start with gtk+-3.13.3 (Gdk.Event(Gdk.EventType.NOTHING)
TypeError: function takes at most 0 arguments (1 given)
2014-10-31 13:40:29 +01:00
Josip
e6d35b8cbd Fix: Warning: The property GtkSettings:gtk-show-unicode-menu is deprecated
and shouldn't be used anymore
2014-10-31 13:25:13 +01:00
Josip
84055c01dc Fix: The property GtkAlignment:yalign|xalign is deprecated
and shouldn't be used anymore
2014-10-31 12:16:19 +01:00
Josip
b475c47994 0008126: Warnings: deprecated Gtk properties and errors loading theme icon
Fix: Error loading theme icon 'gtk-apply'
2014-10-31 09:59:01 +01:00
Josip
f9ebdaadc3 croatian translation 2014-10-31 03:12:02 +01:00
leonhaeuser
9478468977 update German translation 2014-10-29 19:34:49 +01:00
Paul Franklin
01baffae32 8154: Some text not translatable in context menu fancharts (GUI) 2014-10-29 09:18:36 -07:00
Zdeněk Hataš
4fd6b0f7c4 czech translation update 2014-10-29 09:56:29 +01:00
Paul Franklin
84318f6ee1 8152: Error converting database after upgrade to Gramps 4.1.1 2014-10-28 17:01:17 -07:00
Nick Hall
54fdf3ef8a 8020: Ensure that reference map has string keys 2014-10-28 17:40:29 +00:00
John Ralls
9740e7fc0c 8140: Gramps doesn't work under Turkish locale
(cherry picked from commit 4662cf1cf94c3502ca8490f213b34d3d094e2d38)
2014-10-27 11:23:55 -07:00
Ugur Cetin
b0b64b0b5c update Turkish translation (partial) 2014-10-26 15:22:58 -07:00
leonhaeuser
57ed1d7cb8 smal change in German translation 2014-10-26 19:17:23 +01:00
leonhaeuser
21e4d8e5ad update German translation 2014-10-26 10:21:14 +01:00
Jérôme Rapinat
3d249cfa01 7362 8103 typo on translations, find po -name *.po -exec sed -i'' -e 's/... 2014-10-26 07:36:41 +01:00
Jérôme Rapinat
9d858d7167 [backport]: 7362 8103: some labels fit better on citations sidebar filter (patch by Nick H.), add the new translated string on most translation files 2014-10-25 16:50:09 +02:00
Paul Franklin
081b2a4ed2 generate new template (gramps.pot) 2014-10-24 14:29:31 -07:00
John Ralls
49f7137577 Update gramps mac version to 4.1.1 2014-10-24 12:41:22 -07:00
Paul Franklin
8732b1e237 add language-warning message to setup.py 2014-10-24 12:33:56 -07:00
Jérôme Rapinat
10f47d73ad Serbian should be ready for Windows OS and LOCALE_NAMES mapping 2014-10-24 19:58:54 +02:00
Jérôme Rapinat
778e87971f bump to 4.1.2 2014-10-24 16:01:40 +02:00
Jérôme Rapinat
0e43df69fb make official '4.1.1' release 2014-10-24 15:56:21 +02:00
Jérôme Rapinat
7a98bc174c 8122: add one line into NEWS (pre-4.1.1) 2014-10-24 09:54:58 +02:00
Jérôme Rapinat
ba22fca9bc 8122: update french translation 2014-10-24 09:21:37 +02:00
Jérôme Rapinat
a1750394d7 8122: DB lock not checked when opening database from the recent opened trees list 2014-10-24 09:17:05 +02:00
Jérôme Rapinat
7c763eb5f8 start to update NEWS for '4.1.1' release 2014-10-24 08:52:02 +02:00
Zdeněk Hataš
d1a81958a8 czech translation update 2014-10-23 20:57:54 +02:00
Jérôme Rapinat
a7966a7a48 typo on Swedish translation 2014-10-23 15:37:22 +02:00
Pier Luigi Cinquantini
d4b8967036 update Esperanto 2014-10-23 15:31:40 +02:00
Paul Franklin
597f1ee8c2 enable Serbian Cyrillic translation 2014-10-22 22:33:26 -07:00
Мирослав Николић
b8323d2132 add Serbian Cyrillic translation file 2014-10-22 22:32:29 -07:00
Paul Franklin
b7a7bca282 rename old Serbian translation file 2014-10-22 22:30:17 -07:00
Jérôme Rapinat
447541e0b2 typo 2014-10-22 19:21:15 +02:00
Jérôme Rapinat
506d7e3160 New locations gramplet [8316e0] 2014-10-22 08:30:19 +02:00
Nick Hall
4bbc0f74d4 7902: Update place details gramplet
Add name, type and alternative names.
Locations are now displayed in a separate gramplet.
2014-10-21 19:31:12 +01:00
Nick Hall
8316e06853 Add new place locations gramplet 2014-10-21 19:31:12 +01:00
Jérôme Rapinat
1ac41d1287 Re-enable Esperento support after a large review (8% to 99%) 2014-10-21 15:23:27 +02:00
Pier Luigi Cinquantini
4a64d306cc Update and review for the Esperanto translation 2014-10-21 15:17:26 +02:00
leonhaeuser
1c038db179 update German translation 2014-10-19 12:56:29 +02:00
Paul Franklin
a868efdeb0 enhance Serbian date handler to handle Cyrillic dates 2014-10-17 18:11:11 -07:00
Nick Hall
294e053212 7813: Add check for empty handle in gramplets 2014-10-17 23:07:50 +01:00
Jérôme Rapinat
457e7207c3 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views (non-english locales) 2014-10-15 21:46:25 +02:00
Jérôme Rapinat
0701c0c0d0 8103: sidebarfilter gramplet does not fit well into People, Events, Citations or Media views 2014-10-15 21:42:07 +02:00
Zdeněk Hataš
433299beec czech translation update 2014-10-13 22:31:34 +02:00
Paul Franklin
3136b041a6 8113: 'Unknown' person in detailed ancestor report can not be translated 2014-10-11 14:38:46 -07:00
Paul Franklin
a2b31f8d55 add datespan example 2014-10-11 10:56:35 -07:00
Jérôme Rapinat
4e9ea44ded 1685: rebuild template; typo for date format; 2 new strings on tools; update french translation 2014-10-08 11:39:16 +02:00
Jérôme Rapinat
353bb62523 1685: Tools: some strings into print statement were untranslated 2014-10-08 11:33:29 +02:00
Paul Franklin
ecb4c1d58e typo ("data format" => "date format") 2014-10-07 11:02:55 -07:00
Jérôme Rapinat
758bf61ae0 7795: typos on geography, rebuild template, update french translation 2014-10-07 15:06:07 +02:00
noirauds
7c5234d333 Geography : bug 0007795: geography.gpr.py: Probable typos 2014-10-07 10:01:56 +02:00
Bastien Jacquet
8ca9a9cccf 8096: Fix new event default type considering existing events with *default* role 2014-10-01 19:09:03 +01:00
Luigi Toscano
5e718ac0ca Italian translation updates and fixes 2014-09-28 03:07:50 +02:00
Nick Hall
5a98e1a9b0 7868: Rebuild secondary indexes after database upgrade 2014-09-26 19:34:58 +01:00
Nick Hall
082b7c8940 8015: Update location utilities to work with proxies 2014-09-26 16:43:00 +01:00
Enno Borgsteede
c667cd5430 7931: Fix check and repair tool for empty placerefs 2014-09-25 22:23:42 +01:00
Jérôme Rapinat
26560d0590 8033: cannot generate Narrative Web report with gendex option enabled, was previous place model (location fields) 2014-09-23 16:33:33 +02:00
Mirko Leonhaeuser
b62e0208c2 update German translation 2014-09-20 17:14:43 +02:00
Zdeněk Hataš
00ef7110bd 8064: translation fixes 2014-09-18 12:21:18 +02:00
Zdeněk Hataš
607c23f546 Fixed issue
czech translation update
2014-09-14 20:13:42 +02:00
John Ralls
e5e610d9b8 Make Bundle ID 4.1.0-2 to distinguish osmgpsmap upgrade. 2014-09-11 10:27:53 -07:00
Petr Hejl
3c84e93b7a 8051: Can't fill in calculated and estimated dates in cs locale 2014-09-11 17:17:34 +02:00
Ross Gammon
e196bf606f 8062: .desktop file missing Keywords entry 2014-09-11 16:58:38 +02:00
Pekka Valta
a79cc2996a update and review for finnish translation 2014-09-11 16:46:40 +02:00
Paul Franklin
3fba4f0ec0 8021: Grafical reports don't use the correct name format 2014-09-10 15:38:56 -07:00
John Ralls
b9a12c4ecf Update OsmGpsMap to version 1.0.2
Addresses problem with retrieving tiles from OpenStreetMap.
Note as well https://gramps-project.org/bugs/view.php?id=8037
2014-09-09 16:55:04 -07:00
Paul Franklin
ed0ff156ee 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-09-01 19:05:48 -07:00
Paul Franklin
1fc35fd0cc revert part of 8014 patch, pending further review 2014-08-25 11:39:41 -07:00
Björn Samvik
1a8e08d80f 8014: Importing gedcom files containing multibyte UTF-8 characters fails 2014-08-25 10:55:21 -07:00
Nick Hall
7ec13cac24 8011: Fix backlinks code in place report
Backlinks for places can now also be places as well as events.
2014-08-24 19:01:04 +01:00
Paul Franklin
63f4abfe47 python3 bytes-string mismatch with ICU installed 2014-08-22 18:15:50 -07:00
Paul Franklin
ca65aa8b37 8012: Text reports don't use the correct name format 2014-08-22 18:01:59 -07:00
Paul Franklin
39beb81e59 tweak to "default" CSS choice for the narrated web report 2014-08-20 07:55:14 -07:00
Mirko Leonhaeuser
c78a0958bc update German translation 2014-08-19 23:18:16 +02:00
Paul Franklin
04b4489a34 enable the "default" CSS choice for the narrated web report
Otherwise, whenever you start the report, you get this:

WARNING: _enumeratedlist.py: line 124: Value 'default' not found for option 'StyleSheet'
2014-08-17 12:48:14 -07:00
Jérôme Rapinat
9f05e33bc2 6934: better GUI support for embeded custom attributes list on media object (backport from master) 2014-08-17 19:19:07 +02:00
Paul Franklin
f867caf61e 7276: translate some punctuation marks -- partial 2014-08-13 09:23:04 -07:00
Nick Hall
1ad6634888 Allow gramplets to be displayed in the dashboard only
Add a new navigation type of 'Dashboard' in gramplet definitions.
Define the dashboard To Do gramplet to be dashboard-only.
2014-08-12 18:54:29 +01:00
Malcom Lewis
9eacd472da Update FSF address to current location. 2014-08-08 19:36:49 -07:00
Paul Franklin
7169784a4b add a few examples (Thai script, Married Name, "estimated about" date) 2014-08-06 12:52:30 -07:00
Zdeněk Hataš
6c965a0860 czech translation update 2014-08-06 14:33:33 +02:00
Mirko Leonhaeuser
101d261bf5 Update German translation 2014-07-18 22:04:33 +02:00
Jérôme Rapinat
0929f677ca update french translation 2014-07-17 15:46:34 +02:00
Jérôme Rapinat
08e1a88c27 7869 7912 7913 6403: various fixes and additions; updated template 2014-07-17 15:38:13 +02:00
Jérôme Rapinat
66b051d3f0 7258 7618 7837: let the win() stuff to windows, fix url/uri handling with non-ascii characters under linux and mac (not tested under mac) 2014-07-17 15:20:47 +02:00
Paul Franklin
42ce347ff5 simplify Canadian Ash Wednesday holiday 2014-07-15 22:57:49 -07:00
Nick Hall
78e5ed05fc 7856: Fix error when no place is selected
Check that a place has been selected when saving.
Use the standard place selection widget to be consistent.
This also implements feature request .
2014-07-16 00:24:46 +01:00
Nick Hall
27fdeb65d6 7915: Prevent user creating a cycle in the place hierarchy 2014-07-15 19:41:14 +01:00
Paul Franklin
75470fd7ca add Arabic-script and Islamic-date examples (courtesy of Munzir Taha) 2014-07-15 09:24:18 -07:00
Nick Hall
4ffa3e8c49 7846: Prevent creation of a place cycle when merging 2014-07-14 22:57:17 +01:00
Nick Hall
82543486d0 7846: Avoid infinite loop when place cycle encountered 2014-07-14 22:57:15 +01:00
Nick Hall
9d419f3f5c 7911: Fix bug adding parent places to a new place 2014-07-14 22:57:12 +01:00
Zdeněk Hataš
c4bcf66e29 czech translation update 2014-07-14 12:45:10 +02:00
Nick Hall
9cc216ed2e 7904: Fix place type for places without a main location 2014-07-12 21:32:14 +01:00
Paul Franklin
b67b060c8c 7861: In Ahnentafel Report, Use Christening Date if no Birth Date 2014-07-11 15:39:00 -07:00
Ondrej Krc-Jediny
a170243369 7869: Various small issues in gramps.pot 2014-07-10 12:47:30 -07:00
Paul Franklin
c8cf6377c6 7739: [Narweb:] Missing webpage for media [under some circumstances] 2014-07-10 09:25:18 -07:00
Paul Franklin
74694b5eee include Gramps.py in the tarball 2014-07-10 09:05:31 -07:00
Mirko Leonhaeuser
76c8708a74 samll fix in German translation 2014-07-05 23:07:27 +02:00
Ondrej Krc
c1b7e8aa67 7882: Invalid link for Merge citation Help button 2014-07-05 10:10:09 +02:00
Josip
b584c0d450 7883: I can't add a people in my tree 2014-07-05 01:25:46 +02:00
Peter Landgren
2c672c4650 Updated gramps.po. 2014-07-02 15:27:15 +02:00
Peter Landgren
c72bac7012 Updated Swedish translation. 2014-07-02 14:48:44 +02:00
Munzir Taha
fcab24ba20 update Arabic translation 2014-06-29 10:46:20 -07:00
Paul Franklin
6592a2e719 7839: Place report does not run 2014-06-28 13:03:26 -07:00
Josip
86bfff69a1 7854: localisation Italian 2014-06-28 18:48:43 +02:00
John Ralls
1537eed079 7851: translations don't show in many labels
Ensure python text domain gets the right encoding.

(cherry picked from commit 65dbb1bd46)
2014-06-23 20:17:26 -07:00
Mirko Leonhaeuser
325cac8335 Fixed 0007840 and 0006655 and update German translation 2014-06-22 17:50:53 +02:00
Nick Hall
bf7d9c48fa 7837: Fix path when using drag & drop to add media 2014-06-22 00:04:45 +01:00
Nick Hall
2706bfb552 7842: Fix custom place types in the place editor
Allow place type combobox to receive focus.
Store custom place types in the metadata table.
2014-06-21 17:34:22 +01:00
Nick Hall
604e9ac9aa 7836: Limit the number of generations displayed in the ancestor gramplet 2014-06-21 14:25:44 +01:00
Nick Hall
bcb9141273 7834: export of a subset of the tree fails 2014-06-19 12:06:36 -07:00
John Ralls
df23a12132 Module fixups from gramps40 2014-06-19 10:39:57 -07:00
Ross Gammon
166dace001 7828: Syntax Error with python3 on test function for Ukrainian relationship calculator 2014-06-17 16:50:58 +02:00
John Ralls
6f7f30f547 Mac bundle for Gramps 4.1.0 2014-06-16 08:12:50 -07:00
Jérôme Rapinat
3b5eb5adf3 Bump to 4.1.1 2014-06-16 15:12:27 +02:00
Nick Hall
4141b7e34a Review on NEWS before '4.1.0' release 2014-06-15 16:05:55 +02:00
Jérôme Rapinat
fadb082afa typo on the urls for french pages (wiki) 2014-06-15 14:22:36 +02:00
Jérôme Rapinat
c031eea046 typo on versioning 2014-06-15 13:52:27 +02:00
Jérôme Rapinat
5f722e4c6c make official '4.1.0' release 2014-06-15 13:37:09 +02:00
Jérôme Rapinat
a1085dac15 update NEWS 2014-06-15 13:03:37 +02:00
Paul Franklin
dc175ea1a1 add translated-output option to B.R. TOC and Index reports 2014-06-14 13:38:26 -07:00
Peter Landgren
1223a75e68 Some updated place translations. 2014-06-14 15:10:02 +02:00
Paul Franklin
707edf3df0 Fix alphabetic index and toc bug in books
Another bad indent from master commit [796240] (and gramps40 [3196f8])
2014-06-13 09:24:31 -07:00
Marc Hulsman
076d514cd2 Add unit test for treemodel nodes 2014-06-12 22:55:35 +01:00
Marc Hulsman
35c4236f27 Add unit test for tree cursors 2014-06-12 22:55:29 +01:00
Nick Hall
baf368c049 7471: Fix python3 sort key errors
Ensure input to strxfrm is correct type.
Apply patch by Marc Hulsman.
2014-06-12 22:06:28 +01:00
Nick Hall
ccd6c3143e Fix alphabetic index and toc bug in books
Bad indent introduced in commit [796240].
2014-06-11 22:34:20 +01:00
Paul Franklin
c7ffa8d075 7398: Gedcom import deletes first char of notes 2014-06-11 10:06:21 -07:00
Paul Franklin
e8ba397f75 improve plugin warning 2014-06-08 13:03:10 -07:00
Paul Franklin
f21e23cd70 7678 typo 2014-06-08 12:59:16 -07:00
Jérôme Rapinat
d16feb7265 7678: some gir modules were not called 2014-06-07 13:28:18 +02:00
Jérôme Rapinat
6e25dd83f5 7678: some fixes around gettext and messages handling 2014-06-07 13:02:27 +02:00
Paul Franklin
090721408b 7784 "IndexError: list index out of range" on [initial CLI "gramps -t"] 2014-06-05 08:02:37 -07:00
Jérôme Rapinat
c9d12d4150 add a missing date value sample on a media object, re-order according to handle value for a place added outside XML export (idempotent) 2014-06-04 14:59:29 +02:00
Jérôme Rapinat
f4d6dbb64b add checksum values on 'example.gramps' 2014-06-04 14:49:11 +02:00
Jérôme Rapinat
ed284d44a5 7678: typo, missing self argument on fallback for personpos_at_angle() 2014-06-04 12:12:02 +02:00
Jérôme Rapinat
7d849d39cf update french translation 2014-06-04 11:30:39 +02:00
Łukasz Rymarczyk
d220ea65f8 update Polish translation 2014-06-04 11:21:56 +02:00
Jérôme Rapinat
6df1e6bd32 7678: typo, set_border_width was set twice on CLIVbox() 2014-06-03 21:16:22 +02:00
Jérôme Rapinat
d4df31abf3 7766: Fan Chart views crash with self.maxperiod = self.minperiod 2014-06-03 10:38:25 +02:00
Espen Berg
bbefe30256 Some revision of Norwegian bokmål 2014-06-02 21:05:58 +02:00
Ondrej Krc
d0aa2c63fc Git Merge Request : Slovak translation updates 2014-06-02 17:21:02 +02:00
Josip
7d98f08949 Updated Croatian translation 2014-06-01 12:23:31 +02:00
Nick Hall
2c06392f57 Update English (British) translation 2014-05-30 23:18:39 +01:00
Ondrej Krc
8f1fca7fed Git Merge Request : Update Slovak date handler 2014-05-30 10:14:36 +02:00
Mirko Leonhaeuser
85f425e8cf smal fix in German translation 2014-05-30 00:50:49 +02:00
Mirko Leonhaeuser
9d57c640c5 some correc tions in German translation regarding the new place structure 2014-05-30 00:43:30 +02:00
Peter Landgren
1a79077235 Updated Swedish translation 2014-05-29 17:35:48 +02:00
Omar Kohl
e3d524d18e Git Merge Request : Spanish typo 2014-05-29 15:54:55 +02:00
Ondrej Krc
9dec158e65 Git Merge Request : Slovak translation updates 2014-05-29 15:39:06 +02:00
Jérôme Rapinat
742f946970 Add support for Slovak manual 2014-05-29 15:32:10 +02:00
Zdeněk Hataš
87d92fc54f typo 2014-05-28 21:31:28 +02:00
Mirko Leonhaeuser
ec1a794648 update German translation 2014-05-27 18:40:12 +02:00
Nick Hall
fd3ca0348f 7712: Use full path for file existence check 2014-05-27 15:25:44 +01:00
Luigi Toscano
d0d9e5b207 Italian translation updates (4.1.x) 2014-05-27 01:51:02 +02:00
Jérôme Rapinat
9d4e3a022b 7554: update template 2014-05-26 17:51:31 +02:00
Nick Hall
16a038d2be Add check for PangoCairo typelib at startup 2014-05-25 14:15:20 +01:00
noirauds
23f64a155b BUG : years are displayed as floating numbers 2014-05-25 11:24:16 +02:00
Nick Hall
0e6b71eb6f Fix tree cursor for read-only databases 2014-05-25 00:00:40 +01:00
Nick Hall
8ceb80bc29 7554: Replace LaTex by LaTeX 2014-05-24 21:26:03 +01:00
Nick Hall
2578252d11 Match alternative names in HasPlace filter 2014-05-24 20:53:42 +01:00
Nick Hall
dd77bf74d5 7177: Rebuild place tree view when a place moves in the hierarchy 2014-05-24 00:08:31 +01:00
John Ralls
26f028afb1 Patch PIL to build with Freetype2 2014-05-23 12:10:17 -07:00
John Ralls
a68679766c 7736: MacOSX Version 4.0.4-1 missing libgtkspell3 from bundle. 2014-05-22 20:26:44 -07:00
Pekka Valta
582b6f7f80 update Finnish translation 2014-05-22 20:53:06 +02:00
Jérôme Rapinat
9822b7d12e Merge branch 'maintenance/gramps41' of ssh://git.code.sf.net/p/gramps/source into gramps41 2014-05-22 20:46:58 +02:00
Ondrej Krc
12ad7514f5 Merge Request : Typo fix in slovak translation 2014-05-22 20:45:56 +02:00
Peter Landgren
7909c352f1 Updated Swedish translation 2014-05-22 17:55:21 +02:00
Lajos Nemeséri
28c1823062 update Hungarian translation 2014-05-22 17:01:19 +02:00
Nick Hall
26ca29b122 7731: Fix error tagging source in citation tree view 2014-05-22 14:07:58 +01:00
Jérôme Rapinat
f7c4cddcc8 remove trunk references for addons 2014-05-22 14:59:07 +02:00
Jérôme Rapinat
bfd7d804f2 merge NEWS from gramps40 2014-05-22 14:51:24 +02:00
Zdeněk Hataš
79ed0c638b czech translation update 2014-05-22 10:20:23 +02:00
Jérôme Rapinat
6a6e1cd73a Do not need to warn user anymore about UNSTABLE code (trunk) 2014-05-22 09:04:37 +02:00
Jérôme Rapinat
098dc0a05c typo on country level (example.gramps) 2014-05-22 09:00:16 +02:00
Jérôme Rapinat
d8cd9b8d72 Consistency (Place levels) on the french translation 2014-05-22 08:39:24 +02:00
Nick Hall
debedc57e9 Enable drag & drop for place references 2014-05-22 00:06:02 +01:00
Nick Hall
3b2bb00706 7729: Extend tag report to show all primary object types 2014-05-21 23:49:56 +01:00
Nick Hall
7bbbafe377 Revert [27453a] and [9d6049]
Fix broken proxies and make proxies read-only.
2014-05-21 22:01:18 +01:00
Jérôme Rapinat
0319dc7490 try to have common place divisions for all countries speaking french 2014-05-21 22:54:25 +02:00
Nick Hall
751b3d5a34 Reduce label width in assistants (Gtk 3.10) 2014-05-21 21:19:48 +01:00
Jérôme Rapinat
978c5055d8 typo 2014-05-21 20:55:43 +02:00
Zdeněk Hataš
76424b61f8 czech translation update 2014-05-21 20:37:51 +02:00
Jérôme Rapinat
c2ee4b0ab9 polish date handler for french locales 2014-05-21 19:40:22 +02:00
Jérôme Rapinat
20ca667b61 update french translation 2014-05-21 18:25:18 +02:00
1873 changed files with 797174 additions and 1025214 deletions
.gitattributes.gitignore.mailmap.pylintrc.travis.ymlAUTHORSCONTRIBUTINGChangeLogFAQGramps.pyINSTALLLICENSEMANIFEST.inNEWSREADMEREADME.mdRELEASE_NOTES
bash
data
authors.xml
css
gramps.appdata.xml.ingramps.xml.ingramps_canonicalize.xslgrampsxml.dtdgrampsxml.rng
javascript
jhtmlarea
lds.xml
man
templates
tests
O0.jpgPG30-1GB.DEFSAMPLE.DEFSAMPLE.IXISAMPLE.IXPSAMPLE.IXRSAMPLE.MEMSAMPLE.PERSAMPLE.RELSAMPLE.REMSAMPLE.X11SAMPLE.X21SAMPLE.grampschild-father-child-loop.grampsdata.grampsdatetest.grampsexample.grampsexp_sample.grampsexp_sample.gwexp_sample.vcfexp_sample.vcsexp_sample.wftexp_sample_csv.csvexp_sample_csv.grampsexp_sample_ged.gedimp_ANSEL_CR.gedimp_ANSEL_CR.grampsimp_ANSEL_CRLF.gedimp_ANSEL_CRLF.grampsimp_ANSEL_LF.gedimp_ANSEL_LF.grampsimp_CustTags.gedimp_CustTags.grampsimp_FTM_16dec2015a-mod1.gedimp_FTM_16dec2015a-mod1.grampsimp_FTM_LINK.gedimp_FTM_LINK.grampsimp_FTM_OCCU_bug.gedimp_FTM_OCCU_bug.grampsimp_FTM_PHOTO.gedimp_FTM_PHOTO.grampsimp_Latin_1_CR.gedimp_Latin_1_CR.grampsimp_Latin_1_CRLF.gedimp_Latin_1_CRLF.grampsimp_Latin_1_LF.gedimp_Latin_1_LF.grampsimp_MediaTest.gedimp_MediaTest.grampsimp_MixInlineXrefNote.gedimp_MixInlineXrefNote.grampsimp_Paris.gedimp_Paris.grampsimp_PhonFax_dfs.gedimp_PhonFax_dfs.grampsimp_UTF_16_BE_BOM_CR.gedimp_UTF_16_BE_BOM_CR.grampsimp_UTF_16_BE_BOM_CRLF.gedimp_UTF_16_BE_BOM_CRLF.grampsimp_UTF_16_BE_BOM_LF.gedimp_UTF_16_BE_BOM_LF.grampsimp_UTF_16_LE_BOM_CR.gedimp_UTF_16_LE_BOM_CR.grampsimp_UTF_16_LE_BOM_CRLF.gedimp_UTF_16_LE_BOM_CRLF.grampsimp_UTF_16_LE_BOM_LF.gedimp_UTF_16_LE_BOM_LF.grampsimp_UTF_8_BOM_CR.gedimp_UTF_8_BOM_CR.grampsimp_UTF_8_BOM_CRLF.gedimp_UTF_8_BOM_CRLF.grampsimp_UTF_8_BOM_LF.gedimp_UTF_8_BOM_LF.grampsimp_UTF_8_NOBOM_CR.gedimp_UTF_8_NOBOM_CR.grampsimp_UTF_8_NOBOM_CRLF.gedimp_UTF_8_NOBOM_CRLF.grampsimp_UTF_8_NOBOM_LF.gedimp_UTF_8_NOBOM_LF.grampsimp_bug_8322_test.gedimp_bug_8322_test.grampsimp_cp1252_CR.gedimp_cp1252_CR.grampsimp_cp1252_CRLF.gedimp_cp1252_CRLF.grampsimp_cp1252_LF.gedimp_cp1252_LF.grampsimp_notetest_dfs.gedimp_notetest_dfs.grampsimp_sample.gedimp_sample.grampsimp_sample_csv.csvimp_sample_csv.grampsimp_test_FTM_CONC.gedimp_test_FTM_CONC.grampsimp_vcard.grampsimp_vcard.vcftest_complex_loop.gramps
tips.xml.in
debian
docs
example
gramps
__init__.py
cli
gen
__init__.pyconfig.pyconst.pyconstfunc.py
datehandler
db
dbstate.py
display
errors.py
filters
__init__.py_filterlist.py_filterparser.py_genericfilter.py_paramfilter.py_searchfilter.py
rules
__init__.py_changedsincebase.py_everything.py_hasattributebase.py_hascitationbase.py_haseventbase.py_hasgallerybase.py_hasgrampsid.py_hasldsbase.py_hasnotebase.py_hasnoteregexbase.py_hasnotesubstrbase.py_hasreferencecountbase.py_hassourcebase.py_hassourcecountbase.py_hassourceofbase.py_hastagbase.py_hastextmatchingregexpof.py_hastextmatchingsubstringof.py_isprivate.py_ispublic.py_matcheseventfilterbase.py_matchesfilterbase.py_matchessourceconfidencebase.py_matchessourcefilterbase.py_regexpidbase.py_rule.py
citation
event
family
media
note
person
__init__.py_changedsince.py_deeprelationshippathbetween.py_disconnected.py_everyone.py_familywithincompleteevent.py_hasaddress.py_hasalternatename.py_hasassociation.py_hasattribute.py_hasbirth.py_hascitation.py_hascommonancestorwith.py_hascommonancestorwithfiltermatch.py_hasdeath.py_hasevent.py_hasfamilyattribute.py_hasfamilyevent.py_hasgallery.py_hasidof.py_haslds.py_hasnameof.py_hasnameorigintype.py_hasnametype.py_hasnickname.py_hasnote.py_hasnotematchingsubstringof.py_hasnoteregexp.py_hasrelationship.py_hassoundexname.py_hassourcecount.py_hassourceof.py_hastag.py_hastextmatchingregexpof.py_hastextmatchingsubstringof.py_hasunknowngender.py_havealtfamilies.py_havechildren.py_incompletenames.py_isancestorof.py_isancestoroffiltermatch.py_isbookmarked.py_ischildoffiltermatch.py_isdefaultperson.py_isdescendantfamilyof.py_isdescendantfamilyoffiltermatch.py_isdescendantof.py_isdescendantoffiltermatch.py_isduplicatedancestorof.py_isfemale.py_islessthannthgenerationancestorof.py_islessthannthgenerationancestorofbookmarked.py_islessthannthgenerationancestorofdefaultperson.py_islessthannthgenerationdescendantof.py_ismale.py_ismorethannthgenerationancestorof.py_ismorethannthgenerationdescendantof.py_isparentoffiltermatch.py_isrelatedwith.py_issiblingoffiltermatch.py_isspouseoffiltermatch.py_iswitness.py_matcheseventfilter.py_matchesfilter.py_matchessourceconfidence.py_matchidof.py_missingparent.py_multiplemarriages.py_nevermarried.py_nobirthdate.py_nodeathdate.py_peopleprivate.py_peoplepublic.py_personwithincompleteevent.py_probablyalive.py_regexpidof.py_regexpname.py_relationshippathbetween.py_relationshippathbetweenbookmarks.py_searchname.py
place
repository
source
test
git_revision.py
lib
merge
mime
plug
proxy
recentfiles.pyrelationship.py
simple
sort.pysoundex.py
test
updatecallback.pyuser.py
utils
grampsapp.py
gui
__init__.pyaboutdialog.pyactiongroup.pyautocomp.pybasesidebar.pyclipboard.pycolumnorder.pyconfigure.pydbguielement.pydbloader.pydbman.pyddtargets.pydialog.pydisplay.pydisplaystate.py
editors
filters
glade.py
glade
grampsgui.pylistmodel.py
logger
makefilter.pymanagedwindow.py
merge
navigator.py
plug
pluginmanager.py
selectors
spell.py
test
thumbnails.pytipofday.pyundohistory.pyuser.pyutils.pyutilscairo.pyviewmanager.py
views
widgets
guiQML
plugins
db
docgen
drawreport
export
gramplet
graph
importer
lib
mapservices
quickview
rel
sidebar
test
textreport
tool
view
webreport
webstuff
test
version.py
webapp
help
images
16x16
22x22
48x48
hicolor
scalable
mac
po
setup.py
test
windows

18
.gitattributes vendored

@@ -1,18 +0,0 @@
# Make Github recognise Gramps as a Python project,
# by marking .sql files as text files!
# See: https://github.com/github/linguist/issues/2462
# https://github.com/github/linguist/blob/master/README.md
*.sql linguist-language=txt
# Have Github ignore js vendored files.
# https://github.com/gramps-project/gramps/tree/master/data/javascript
#data/javascript/*.js linguist-vendored
# don't mess with line endings for test files
*.vcs -text
*.ged -text
*.GED -text
*.csv -text
*.DEF -text
*.IXI -text
*.REM -text

9
.gitignore vendored

@@ -8,7 +8,7 @@ dist/
# Gramps
data/tips.xml
data/holidays.xml
gramps/plugins/lib/holidays.xml
po/.intltool-merge-cache
docs/_build/
@@ -18,10 +18,3 @@ tags
# Testing
test/data
# Windows image file caches
Thumbs.db
ehthumbs.db
# Glade temp files
*~

@@ -1,28 +0,0 @@
<benny.malengier@gramps-project.org> <benny.malengier@gmail.com>
<doug.blank@gmail.com> <dsblank@bitbucket.org>
<doug.blank@gmail.com> <dblank@cs.brynmawr.edu>
<beernarrd@gmail.com> <beernarrd@users.sourceforge.net>
<igal.shapira@gmail.com> <igalshapira@users.sourceforge.net>
<romjerome@yahoo.fr> <romjerome@users.noreply.github.com>
<jralls@ceridwen.us> <john@aeolus.local>
<josip@pisoj.com> <bpisoj@gmail.com>
Josip Pisoj <josip@pisoj.com>
Mirko Leonhaeuser <mirko@leonhaeuser.de>
<martin.hawlisch@gmx.de> <loshawlos@users.sourceforge.net>
Matti Niemelä <matti.u.niemela@gmail.com> <niememat@gmail.com>
<nick-h@gramps-project.org> <nick__hall@hotmail.com>
<nick-h@gramps-project.org> <Nick-Hall@users.noreply.github.com>
Ondrej Krč-Jediný <hou@centrum.sk>
<hou@centrum.sk> <ondrisko@users.sourceforge.com>
Pierre Bélissent <pierre.belissent@gmail.com>
Serge Noiraud <Serge.Noiraud@free.fr>
<Serge.Noiraud@free.fr> <serge.noiraud@free.fr>
<Serge.Noiraud@free.fr> <serge.noiraud@laposte.net>
Zdeněk Hataš <zdenek.hatas@gmail.com>
<zdenek.hatas@gmail.com> <zdenek.hatas@hp.com>
<zdenek.hatas@gmail.com> <zenhas@users.sourceforge.net>
<gerald@gkunzmann.de> <g.kunzmann@arcor.de>
Tim G L Lyons <tim.g.lyons@gmail.com>
<tim.g.lyons@gmail.com> <guy.linton@gmail.com>
Elder Evans <elderamevans@gmail.com>

378
.pylintrc

@@ -1,378 +0,0 @@
[MASTER]
# Specify a configuration file.
#rcfile=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Pickle collected data for later comparisons.
persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Use multiple processes to speed up Pylint.
jobs=1
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=
# Allow optimization of some AST trees. This will activate a peephole AST
# optimizer, which will apply various small optimizations. For instance, it can
# be used to obtain the result of joining multiple strings with the addition
# operator. Joining a lot of strings can lead to a maximum recursion error in
# Pylint and this flag can prevent that. It has one side effect, the resulting
# AST will be different than the one from reality.
optimize-ast=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time. See also the "--disable" option for examples.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once).You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=suppressed-message,intern-builtin,round-builtin,unicode-builtin,range-builtin-not-iterating,long-builtin,basestring-builtin,setslice-method,print-statement,reload-builtin,metaclass-assignment,raising-string,next-method-called,import-star-module-level,xrange-builtin,getslice-method,zip-builtin-not-iterating,reduce-builtin,dict-iter-method,delslice-method,using-cmp-argument,hex-method,buffer-builtin,old-ne-operator,nonzero-method,backtick,parameter-unpacking,indexing-exception,file-builtin,filter-builtin-not-iterating,raw_input-builtin,execfile-builtin,oct-method,cmp-method,coerce-builtin,long-suffix,cmp-builtin,input-builtin,dict-view-method,standarderror-builtin,apply-builtin,old-raise-syntax,unichr-builtin,old-division,coerce-method,unpacking-in-except,useless-suppression,no-absolute-import,map-builtin-not-iterating,old-octal-literal
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages
reports=yes
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
[BASIC]
# List of builtins function names that should not be used, separated by a comma
bad-functions=map,filter
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_,db
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
# Regular expression matching correct argument names
argument-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for argument names
argument-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Naming hint for module names
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Regular expression matching correct class attribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Naming hint for class attribute names
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Regular expression matching correct function names
function-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for function names
function-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct inline iteration names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
# Naming hint for inline iteration names
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
# Regular expression matching correct constant names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Naming hint for constant names
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Regular expression matching correct method names
method-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for method names
method-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
# Naming hint for class names
class-name-hint=[A-Z_][a-zA-Z0-9]+$
# Regular expression matching correct variable names
variable-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for variable names
variable-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct attribute names
attr-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for attribute names
attr-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
[ELIF]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format
logging-modules=logging
[SPELLING]
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
[TYPECHECK]
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set). This supports can work
# with qualified names.
ignored-classes=
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=80
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,dict-separator
# Maximum number of lines in a module
max-module-lines=1000
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=_$|dummy
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,_cb
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,__new__,setUp
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,_fields,_replace,_source,_make
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=optparse
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
[DESIGN]
# Maximum number of arguments for function / method
max-args=5
# Argument names that match this expression will be ignored. Default to name
# with leading underscore
ignored-argument-names=_.*
# Maximum number of locals for function / method body
max-locals=15
# Maximum number of return / yield for function / method body
max-returns=6
# Maximum number of branch for function / method body
max-branches=12
# Maximum number of statements in function / method body
max-statements=50
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of attributes for a class (see R0902).
max-attributes=7
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of boolean expressions in a if statement
max-bool-expr=5
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=Exception

@@ -1,129 +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/
sudo: required
dist: trusty
language: python
python:
- 3.3 # This is irrelevant, because the virtualenv is not used at all
# FIXME: The minimum requirement for Gramps is Python 3.2, so a test environment
# for Python 3.2 should be added to this environment which is Python 3.3. It
# will not be possible to run coverage under Python 3.2, because coverage is
# Python 3.3 (or above) only.
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-pyicu
- 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 ast<73>s 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/gramps50/plugins/
- wget https://github.com/gramps-project/addons/raw/master/gramps50/download/CliMerge.addon.tgz
- tar -C ~/.gramps/gramps50/plugins -xzf CliMerge.addon.tgz
- wget https://github.com/gramps-project/addons/raw/master/gramps50/download/ExportRaw.addon.tgz
- tar -C ~/.gramps/gramps50/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)

@@ -1,3 +1,4 @@
<!-- $Id$ -->
Alex Roitman shura@gramps-project.org
@@ -64,8 +65,6 @@ Martin Hawlisch martin.hawlisch@gmx.de
Nick Hall nick__hall@hotmail.com
Paul Culley paulr2787@gmail.com
Peter Landgren peter.talken@telia.com
Raphael Ackermann raphael.ackermann@gmail.com

@@ -1,12 +0,0 @@
See developer documentation at:
https://gramps-project.org/wiki/index.php?title=Portal:Developers
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_patchfile
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_PR
If you are interested in translating:
* The Gramps program to your language see:
https://gramps-project.org/wiki/index.php?title=Translating_Gramps
https://gramps-project.org/wiki/index.php?title=Portal:Translators
* The Gramps user manual to your language see:
https://gramps-project.org/wiki/index.php?title=Translating_the_Gramps_User_manual

527
ChangeLog

@@ -1,527 +0,0 @@
2019-08-08 prculley <paulr2787@gmail.com>
* AUTHORS, ChangeLog, FAQ, NEWS, po/ChangeLog, po/gramps.pot:
Prepare for Release 5.0.2
2019-08-08 Paul Culley <paulr2787@gmail.com>
* gramps/gen/plug/_gramplet.py: Fix some Gramplets not updating
during tree changes after db change. (#865) Fixes #11234
2019-08-08 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/gramplet/events.py: Fix Events Grampslet for bad
sort order on dates/ages (#867) Fixes #7616
2019-08-08 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/displaytabs/backreflist.py,
gramps/gui/editors/displaytabs/backrefmodel.py: Fix References Tab
to update on Deletes of items when editor is open (#864) Fixes #11231
2019-08-08 Paul Culley <paulr2787@gmail.com>
* data/tests/imp_notetest_dfs.gramps,
gramps/plugins/lib/libgedcom.py: Fix GEDCOM import for better
support of TMG (#861) Fixes #11224
2019-08-07 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/__init__.py: Fix Edit Link 'New' button to work
(#863) Fixes #11225
2019-08-07 Paul Culley <paulr2787@gmail.com>
* data/tests/exp_sample_ged.ged, data/tests/imp_sample.ged,
data/tests/imp_sample.gramps,
gramps/plugins/export/exportgedcom.py,
gramps/plugins/lib/libgedcom.py: Fix GEDCOM importer to properly
handle multiple surnames per 5.5.1 (#862) Fixes #11228
2019-08-01 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/webreport/common.py,
gramps/plugins/webreport/place.py: Narrative web: Sort problem with
places. (#854) * Narrative web: Sort problem with places. Fixes #10868. Places list is not sorted depending on the selected language. If you start gramps in english or another language then try to
generated a narrative web report in another language, the navigation
alphabet is incorrect. This is true for the place list and the
person list. The problem was related to pyICU. * Narrative web: some pylint improvement.
2019-08-01 Paul Culley <paulr2787@gmail.com>
* gramps/gui/navigator.py, gramps/gui/viewmanager.py: Fix Navigator
sidebar so can change view type with proper resize (#853) Fixes #6422, #11164
2019-07-31 Paul Culley <paulr2787@gmail.com>
* gramps/gui/views/treemodels/flatbasemodel.py: fix crash when using
sidebar filter and merging in another view (#858) Fixes #11089, #11064, #11134
2019-07-31 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/drawreport/ancestortree.py,
gramps/plugins/lib/librecurse.py: Fix AncestorTree so add siblings
to center person works (#852) Fixes #11215
2019-07-31 Paul Culley <paulr2787@gmail.com>
* gramps/gen/config.py, gramps/gen/plug/docgen/graphdoc.py,
gramps/grampsapp.py, gramps/gui/configure.py: Fix graphs on Windows
for font selection not working (#849) Fixes #11212
2019-07-31 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/db/dbapi/dbapi.py: Fix dbapi reindex_reference_maps
tool to properly close transaction (#847) Fixes #11195
2019-07-10 Paul Culley <paulr2787@gmail.com>
* gramps/gui/widgets/selectionwidget.py: Fix zoom via mouse wheel in
media event editor selectionwidget (#835) also fixes zooming with scroll bars always present Fixes #11198
2019-03-20 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2019-06-14 Mattkmmr <49940207+Mattkmmr@users.noreply.github.com>
* gramps/plugins/gramplet/metadataviewer.py: Fix metadataviewer.py
(#823) Fix so that metadata is actually detected and displayed (signal was
not getting detected).
2019-06-12 niememat <niememat@gmail.com>
* po/fi.po: Update finnish translation
2019-06-11 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Fix graphviz and exiv2 download URLs.
2019-06-11 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Update dependency versions and download paths.
2019-06-10 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/gen/utils/place.py, gramps/gen/utils/test/place_test.py,
gramps/plugins/view/geoplaces.py: Avoid comma in a lat/lon entry
field. (#812) * Avoid comma in a lat/lon entry field. * Be more precise on the tooltip text. * conv_lat_lon should not accept comma in lat/lon * Tests failed with comma in lat/lon * geoplaces fails to center if bad lat/lon
2019-06-10 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/gui/editors/displaytabs/surnametab.py,
gramps/gui/widgets/monitoredwidgets.py: Avoid invalid characters in
the entry field (#811) In this patch: 1 - If you copy/paste strings from another application, you can add CR, LF, TAB and other special characters. I remove
them. 2 - suppress all leading and trailing spaces for these
entry field.
2019-06-10 milotype <43657314+milotype@users.noreply.github.com>
* po/hr.po: Update Croatian translation (#824)
2019-06-09 Paul Culley <paulr2787@gmail.com>
* gramps/gui/displaystate.py, gramps/gui/views/listview.py: Fix
crash for multiple deletes in one transaction (#814) Fixes #11117
2019-06-10 Ed Bennett <pyedward@swansea.ac.uk>
* gramps/gen/relationship.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: Adjust translation
strings for unmarried partners to give correct text in English
(#818) Fixes #11109
2019-05-07 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Disable vala for gexiv2, it breaks
introspection.
2019-01-05 caigner <github@sys-admin.at>
* gramps/gui/views/navigationview.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: changed
'Edit ->Set Home Person' to 'Edit -> Set Home Person'
2019-04-14 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: typo on french translation
2019-04-13 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/lib/libgedcom.py: Fix failure after Gedcom import
if missing objects were found (#807) Fixes #11082
2019-03-26 John Ralls <jralls@ceridwen.us>
* gramps/gen/utils/maclocale.py: [maclocale] Fix none type has no
len(). Fixes #11075
2019-03-17 Paul Culley <paulr2787@gmail.com>
* data/tests/imp_sample.gramps, gramps/plugins/lib/libgedcom.py: Fix
Gedcom import so it doesn't create completely empty Birth events
(#799) Fixes #10145 Note: a completely empty birth event is removed by Check and Repair;
this is wrong in that sometimes we know a person is born, but not
date/place. In Gedcom this is indicated by "1 BIRT Y" lines. So this PR adds a description to the birth event. This is not an
issue for other event types, the C&R tool sees the non-default type
and leaves it alone, but birth is the default type.
2019-03-17 milotype <43657314+milotype@users.noreply.github.com>
* po/hr.po: Update Croatian translation (#803) update with current maint50 pot file
2019-03-16 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/view/relview.py: Fix Relationship view so ages are
according to Preferences (#798) Fixes #11040
2019-03-16 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/displaytabs/personeventembedlist.py: Fix Person
Editor Events to properly update during external changes (#797) like Event delete or update. Fixes #11051 Looks like someone simply forgot to register the handles with the
callman... I checked other similar cases and did not see any other issues.
2019-03-16 Paul Culley <paulr2787@gmail.com>
* data/tests/exp_sample_ged.ged,
data/tests/imp_FTM_16dec2015a-mod1.gramps,
data/tests/imp_MediaTest.gramps, data/tests/imp_sample.gramps,
gramps/plugins/export/exportgedcom.py,
gramps/plugins/lib/libgedcom.py: Gedcom fixes for mime and finding
media (#795) * Fix Gedcom import/export for more comprehensive mime types Fixes #11041 * Fix Gedcom import to better find media files Issue #11041 * Fix Gedcom test files for media mime and error location message
2019-03-17 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/lib/maps/geography.py: Unhandled exception in
Geography editor (#793) Fixes #11048 better pylint score remove unused code
2019-03-16 Paul Culley <paulr2787@gmail.com>
* gramps/gen/filters/rules/person/_relationshippathbetween.py: Fix
relationshippathbetween filter rule when parent is missing (#792) Fixes #11049 Another HandleError issue, this one hidden by the raw except. Filter
rule just did not work if a family in the path had a missing parent.
2019-03-16 Paul Culley <paulr2787@gmail.com>
* gramps/gen/plug/docgen/graphdoc.py: Fix Graphs that use graphdoc
pdf via Ghostscript with multi-page (#791) for poor font rendering of some characters (thanks to Ken Sharp) Fixes #11047
2019-03-16 Paul Culley <paulr2787@gmail.com>
* example/gramps/data.gramps, example/gramps/example.gramps: Fix
example gramps files so media is found (#785) Fixes #11015 On Windows the location of the example files is "c:\program
files\grampsaio64-5.0.1\share\doc\gramps\example\gramps". On my Ubuntu install from the .deb file these files are in
"/usr/share/doc/gramps/example/gramps" Since the default GRAMPS_RESOURCES value for each system is the
'share', to find the media files we need to append
"/doc/gramps/example/gramps" to have the example files work
properly.
2019-03-16 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/tool/finddupes.py: fix finddupes tool when run from
Match Threshold screen again (#790) after merge. Avoids HandleError because potentials dict is not
cleared. Fixes #11044
2019-01-17 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2019-02-27 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: Slovenian translation correction
2019-02-16 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: update french translation
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: update (partial) french translation
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: merge with last template
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: bug 10841: Typos in the French translation
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
* po/fr.po: fix a typo
2019-02-13 Paul Culley <paulr2787@gmail.com>
* data/tests/imp_MediaTest.gramps, gramps/plugins/lib/libgedcom.py:
Fix Gedcom import for multiple notes on OBJE (MULTIMEDIA_LINK)
(#782) Fixes #10277
2019-02-13 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/db/dbapi/dbapi.py,
gramps/plugins/importer/importxml.py: Deal with SQLite db corrupted
by None name mapping (#784) Fixes #11011
2019-02-13 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/importer/importxml.py: Fix XML import to add tags
to Events, Sources, Places, Repos, Cits (#780) Fixes #11004
2019-02-13 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/displaytabs/eventembedlist.py,
gramps/gui/editors/displaytabs/personrefembedlist.py,
gramps/gui/editors/displaytabs/placerefembedlist.py,
gramps/gui/editors/editcitation.py,
gramps/gui/editors/editevent.py,
gramps/gui/editors/editeventref.py,
gramps/gui/editors/editfamily.py, gramps/gui/editors/editperson.py:
Fix for delete of a ref'd primary obj while editing an added obj.
(#779) Also fixed to update the ref'd obj on changes from outside the
editor. Fixes #10999, #11000, #11001, #11002
2019-02-13 Paul Culley <paulr2787@gmail.com>
* gramps/gen/filters/_genericfilter.py,
gramps/gui/views/treemodels/treebasemodel.py: Fix Place Tree view
when using enclosed by sidebar filter (#764) the filter was incorrectly using a standard place cursor instead of
the tree cursor. Fixes #10948
2019-02-10 Bernard Banko <beernarrd@gmail.com>
* po/sl.po: Slovenian language update
2019-02-10 Luigi Toscano <luigi.toscano@tiscali.it>
* po/it.po: Italian translation updates - restore few strings from the welcome Gramplet that got lost after the split of a messages in smaller messages; - fix few errors.
2019-02-10 Luigi Toscano <luigi.toscano@tiscali.it>
* po/it.po: Refresh the Italian po file
2019-02-02 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/editfamily.py: Fix EditFamily for adding a
child to single parent family with (#777) Surname guessing set to combination. Fixes #10997
2019-01-22 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/drawreport/descendtree.py: Fix Descendent Tree
report for crash when person has multiple (#773) families and one of them doesn't have a spouse. Fixes #10983, #10971, #10661
2019-01-22 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Update German translation
2019-01-21 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/db/dbapi/dbapi.py: Fix Name editor crash after
clearing a group_as name on dbapi dbs (#771) Fixes #10981
2019-01-22 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/gen/merge/mergefamilyquery.py,
gramps/gui/merge/mergecitation.py, gramps/gui/merge/mergeevent.py,
gramps/gui/merge/mergefamily.py, gramps/gui/merge/mergemedia.py,
gramps/gui/merge/mergenote.py, gramps/gui/merge/mergeperson.py,
gramps/gui/merge/mergeplace.py,
gramps/gui/merge/mergerepository.py,
gramps/gui/merge/mergesource.py,
gramps/plugins/test/db_undo_and_signals_test.py: We should stay on
the selected item in list views: (#770) Fixes #10966 When we try to merge two objects, we should stay on the selected row
in list views. This problem occurs for persons, families, events,
places, sources, citations, repositories, media and notes. Another problem: In case we select the first family and select the
gramps_id of the second family, the new gramps_id is ignored:
problem in MergeFamilyQuery
2019-01-21 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/graph/gvrelgraph.py: Fix Relationship Graph; extra
people when using filters & subgraphs (#769) subgraph option wasn't checking parents against filtered results Fixes #10947
2019-01-22 Christian Aigner <github@sys-admin.at>
* po/de.po: [German] Change Text on Settings -> Colour (#767) * Unified the labels. The overall appearance looks now a bit cleaner. * Fixed a grammatical bug (das -> dass)
2019-01-21 Paul Culley <paulr2787@gmail.com>
* gramps/gen/display/place.py: fix Place Format Editor file
save/load for difficult names (#766) Fixes #10949
2019-01-22 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/plugins/graph/gvfamilylines.py: Not all place types appears
on family lines Graph (#763)
2019-01-22 Christian Aigner <github@sys-admin.at>
* po/de.po: Corrections in 'Tip of Day'; changed 'Schlussnotizen' to
'Quellennachweis' (#753)
2019-01-12 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2019-01-12 Sam Manzi <manzi.sam@gmail.com>
* gramps/plugins/tool/sortevents.py: Remember location of Sort
Events Tool (#750) Issue #9795
2019-01-11 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation
2019-01-05 Paul Culley <paulr2787@gmail.com>
* gramps/gui/editors/editmedia.py: Fix Media editor when using
double click the preview of added media (#752) Fixes #10923
2019-01-05 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: update German translation
2019-01-05 niememat <niememat@gmail.com>
* po/fi.po: Fix and updated translation in Finnish
2019-01-04 P Ekholm <par.ekholm@pekholm.se>
* po/sv.po: Update Swedish translation
2019-01-02 prculley <paulr2787@gmail.com>
* po/gramps.pot: Update gramps.pot
2019-01-01 prculley <paulr2787@gmail.com>
* po/gramps.pot: Revert "update gramps.pot", the update_po.py
doesn't work with glade files on Windows This reverts commit fcfecef459b37cbba0c61ae18f19f93363124980.
2019-01-01 prculley <paulr2787@gmail.com>
* po/gramps.pot: update gramps.pot
2019-01-01 prculley <paulr2787@gmail.com>
* po/update_po.py: Fix update_po.py to run on Windows
2018-12-31 caigner <github@sys-admin.at>
* po/de.po: German translation corrections
2018-12-30 Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: update German translation
2018-12-29 Serge Noiraud <Serge.Noiraud@laposte.net>
* gramps/gui/editors/editplace.py,
gramps/gui/editors/editplaceref.py: Avoid leading and trailing
spaces when copy/paste (#747) coordinates from a map provider. Fixes #10937
2018-12-28 John Ralls <jralls@ceridwen.us>
* gramps/gui/widgets/fanchart.py,
gramps/plugins/docgen/cairodoc.py,
gramps/plugins/lib/maps/messagelayer.py,
gramps/plugins/view/pedigreeview.py: Set correct font resolution for
Mac when drawing text directly to cairo. (#745) Fixes #0010924
2018-12-28 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Add some untranslated strings in po/sv.po
2018-12-28 vantu5z <vantu5z@mail.ru>
* po/ru.po: update Russian translation
2018-12-26 prculley <paulr2787@gmail.com>
* po/da.po: remove crlf line endings on da.po
2018-12-24 John Ralls <jralls@ceridwen.us>
* mac/gramps_launcher.py: Remove extraneous setting of
GTK_IM_MODULE_FILE. Fixes #10929
2018-12-22 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation
2018-12-21 RossGammon <upstream@the-gammons.net>
* debian/changelog, debian/copyright: Update debian files after
5.0.1 release (#744)
2018-12-20 prculley <paulr2787@gmail.com>
* gramps/gen/const.py, gramps/version.py: Bump to 5.0.2
2018-11-15 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po - all strings complete
2018-11-14 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-14 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-13 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-12 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-11 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-10 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-09 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-07 P<>r Ekholm <pelle.ekh@koping.net>
* po/sv.po: Update po/sv.po
2018-11-07 P<>r Ekholm <pelle.ekh@koping.net>
* Update po/sv.po

192
FAQ

@@ -1,4 +1,4 @@
**** This is Gramps Frequently Asked Questions ****
**** This is GRAMPS Frequently Asked Questions ****
The questions below frequently come up in mailing list discussions and forums.
This list is by no means complete. If you would like to add questions/answers
@@ -9,23 +9,23 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
==General==
1. What is Gramps?
1. What is GRAMPS?
2. Where do I get it and how much does it cost?
3. Does Gramps exist in other languages?
3. Does GRAMPS exist in other languages?
4. How do I keep backups?
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
7. Does it work with Windows (tm)?
8. Does it work with the Mac?
9. What are the Minimum Specs to run Gramps?
9. What are the Minimum Specs to run GRAMPS?
==Preferences==
@@ -33,43 +33,43 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
==Collaboration-Portability==
11. Is Gramps compatible with other genealogical software?
11. Is GRAMPS compatible with other genealogical software?
12. Can Gramps read files created by GenApp X?
12. Can GRAMPS read files created by GenApp X?
13. Can Gramps write files readable by GenApp X?
13. Can GRAMPS write files readable by GenApp X?
14. What standards does Gramps support?
14. What standards does GRAMPS support?
15. How do I import data from another genealogy program into Gramps?
15. How do I import data from another genealogy program into GRAMPS?
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
==Reports==
17. Can Gramps print a genealogical tree for my family?
17. Can GRAMPS print a genealogical tree for my family?
18. In what formats can Gramps output its reports?
18. In what formats can GRAMPS output its reports?
19. How can I change the default language in reports?
20. Is Gramps compatible with the Internet?
20. Is GRAMPS compatible with the Internet?
21. Can I create custom reports/filters/whatever?
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
23. I would like to contribute to Gramps by writing my favorite report.
23. I would like to contribute to GRAMPS by writing my favorite report.
==Database - Gramps file formats==
==Database - GRAMPS file formats==
24. What is the maximum database size (bytes) Gramps can handle?
24. What is the maximum database size (bytes) GRAMPS can handle?
25. How many people can Gramps database handle?
25. How many people can GRAMPS database handle?
26. My database is really big. Is there a way around loading all the data into memory?
27. Can I run Gramps from a database on a NFS share?
27. Can I run GRAMPS from a database on a NFS share?
28. Why is the database format not portable?
@@ -77,116 +77,123 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
29. I found a bug and I want it fixed right now! What do I do?
30. Gramps should be a .... type of application
30. GRAMPS should be a .... type of application
==Gramps Webhosting ==
==GRAMPS Webhosting ==
31. How can I publish web sites generated by GRAMPS?
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
31. How can I publish web sites generated by Gramps?
**** Questions and answers ****
==General==
1. What is Gramps?
1. What is GRAMPS?
Gramps is the Genealogical Research and Analysis Management Program System.
GRAMPS is the Genealogical Research and Analysis Management Program System.
In other words, it is a personal genealogy program letting you store, edit,
and research genealogical data using the powers of your computer.
2. Where do I get it and how much does it cost?
Gramps can be downloaded from http://sf.net/projects/gramps at no charge.
Gramps is an Open Source project covered by the GNU General Public License.
GRAMPS can be downloaded from http://sf.net/projects/gramps at no charge.
GRAMPS is an Open Source project covered by the GNU General Public License.
You have full access to the source code and are allowed to distribute the
program and source code freely.
3. Does Gramps exist in other languages?
3. Does GRAMPS exist in other languages?
Yes, at the moment Gramps is translated in 15 languages
Yes, at the moment GRAMPS is translated in 15 languages
4. How do I keep backups?
Use a recent version of Gramps! From 2.2.5 onwards there is an automatic backup utility.
It is extremely important to keep backups of your data, and keep them in a safe place. Gramps has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), Gramps will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
Use a recent version of GRAMPS! From 2.2.5 onwards there is an automatic backup utility.
It is extremely important to keep backups of your data, and keep them in a safe place. GRAMPS has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), GRAMPS will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
Note: The .gramps files are compressed. Clicking them will open Gramps. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
Do not keep backups in GEDCOM. Not all information Gramps stores can be written in the GEDCOM. Hence, an export/import operation Gramps --> GEDCOM --> Gramps, will mean you lose data. Use the .gramps file format for backups!
Note: The .gramps files are compressed. Clicking them will open GRAMPS. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
Do not keep backups in GEDCOM. Not all information GRAMPS stores can be written in the GEDCOM. Hence, an export/import operation GRAMPS --> GEDCOM --> GRAMPS, will mean you lose data. Use the .gramps file format for backups!
Do not keep backups in GRDB format. GRDB is a database, which might be computer dependent (read, not working on a different PC). Small damage to a GRDB file can also not be repaired. Use the .gramps file format for backups!
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
Yes. Gramps works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
Yes. GRAMPS works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
==Installation==
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, Gramps should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, Gramps will have additional functionality. The Gramps project recommends version 2.8 or higher of GTK.
GRAMPS is a [http://en.wikipedia.org/wiki/Gtk GTK] application. GRAMPS needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, GRAMPS should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, GRAMPS will have additional functionality. The GRAMPS project recommends version 2.8 or higher of GTK.
7. Does it work with Windows (tm)?
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and GRAMPS off the CD, even if your computer is entirely Windows.
An Windows installer is available for 32 and 64 bit versions of windows from Windows versions 7 through 10. As with all other support, we do do our best to solve windows related problems.
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
8. Does it work with the Mac?
The Fink project has ported some older versions of Gramps to OS X (tm). The Mac OS X port is not directly supported by the Gramps project, primarily because none of the Gramps developers have access to Mac OS X and because OS X is not Free Software.
The Fink project has ported some older versions of GRAMPS to OS X (tm). The Mac OS X port is not directly supported by the GRAMPS project, primarily because none of the GRAMPS developers have access to Mac OS X and because OS X is not Free Software.
This present version of Gramps (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
This present version of GRAMPS (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
9. What are the Minimum Specs to run Gramps?
9. What are the Minimum Specs to run GRAMPS?
We would recommend at least an 800x600 video display. For Gramps 5.x, Gramps can run quite efficiently on a 3GB memory system. A system with that much RAM should be able to hold more than 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
We would recommend at least an 800x600 video display. For GRAMPS 2.0, the memory requirements have been reduced, and GRAMPS can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
==Preferences==
10. Can I change the dates in reports to 'day month year'
Yes, change in the preferences ("Edit->Preferences") the date for Gramps to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
Yes, change in the preferences ("Edit->Preferences") the date for GRAMPS to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
==Collaboration-Portability==
11. Is Gramps compatible with other genealogical software?
11. Is GRAMPS compatible with other genealogical software?
Gramps makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable Gramps to read and write GEDCOM files.
GRAMPS makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable GRAMPS to read and write GEDCOM files.
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by Gramps, and we will do our best to support it!
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by GRAMPS, and we will do our best to support it!
12. Can Gramps read files created by GenApp X?
12. Can GRAMPS read files created by GenApp X?
See above.
13. Can Gramps write files readable by GenApp X?
13. Can GRAMPS write files readable by GenApp X?
See above.
14. What standards does Gramps support?
14. What standards does GRAMPS support?
The nice thing about standards is that there never is a shortage of them. Gramps is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
The nice thing about standards is that there never is a shortage of them. GRAMPS is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
15. How do I import data from another genealogy program into Gramps?
15. How do I import data from another genealogy program into GRAMPS?
The best way is to create a new gramps database file, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
While Gramps can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
While GRAMPS can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
* Do I really want relatives or other people to directly edit my genealogy database?
* Do I implicitly trust, without verification, any data that people may enter?
* Do these people have the same understanding of good genealogy practice that I have?
@@ -197,7 +204,7 @@ You may also want to consider the effects of possible downtime of your site if y
==Reports==
17. Can Gramps print a genealogical tree for my family?
17. Can GRAMPS print a genealogical tree for my family?
Yes. Different people have different ideas of what a genealogical tree is.
Some think of it as a chart going from the distant ancestor and listing
@@ -205,14 +212,14 @@ all his/her descendants and their families. Others think it should be a
chart going from the person back in time, listing the ancestors and their
families. Yet other people think of a table, text report, etc.
Gramps can produce any of the above, and many more different charts and
GRAMPS can produce any of the above, and many more different charts and
reports. Moreover, the plugin architechture enables users (you) to create
their own plugins which could be new reports, charts, or research tools.
18. In what formats can Gramps output its reports?
18. In what formats can GRAMPS output its reports?
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and Graphviz formats.
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.
19. How can I change the default language in reports?
@@ -220,11 +227,11 @@ Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical
The reports are in the language of your linux installation. You can change it by installing extra language packs, see [Howto: Change the language of reports] on wiki.
20. Is Gramps compatible with the Internet?
20. Is GRAMPS compatible with the Internet?
Gramps can store web addresses and direct your browser to them. It can import
GRAMPS can store web addresses and direct your browser to them. It can import
data that you download from the Internet. It can export data that you could
send over the Internet. Gramps is familiar with the standard file formats
send over the Internet. GRAMPS is familiar with the standard file formats
widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and
WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that,
there is little that a genealogical program can do with the Internet :-)
@@ -234,7 +241,7 @@ there is little that a genealogical program can do with the Internet :-)
Yes. There are many levels of customization. One is creating or modifying
the templates used for the reports. This gives you some control over
the fonts, colors, and some layout of the reports. You can also use Gramps
the fonts, colors, and some layout of the reports. You can also use GRAMPS
controls in the report dialogs to tell what contents should be used for a
particular report. In addition to this, you have an ability to create your
own filters -- this is useful in selecting people based on criteria set
@@ -246,47 +253,47 @@ knowledge of programming in Python.
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for Gramps).
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for GRAMPS).
If you only have Latin text, the PDF option will produce a smaller PDF compared to that created by gnome-print, simply because no font information will be embedded.
23. I would like to contribute to Gramps by writing my favorite report.
23. I would like to contribute to GRAMPS by writing my favorite report.
How do I do that?
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing Gramps report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing Gramps tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing GRAMPS report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing GRAMPS tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with Gramps, create menu item, and so on.
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with GRAMPS, create menu item, and so on.
If you are happy with your plugin and would like to contribute your code back to the Gramps project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
If you are happy with your plugin and would like to contribute your code back to the GRAMPS project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
==Database - Gramps file formats==
==Database - GRAMPS file formats==
24. What is the maximum database size (bytes) Gramps can handle?
24. What is the maximum database size (bytes) GRAMPS can handle?
Gramps has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, Gramps should have no problem using databases with tens of thousands of people.
GRAMPS has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, GRAMPS should have no problem using databases with tens of thousands of people.
25. How many people can Gramps database handle?
25. How many people can GRAMPS database handle?
See above. Again, this is dependent on how much memory you have, see [Gramps Performance] on wiki.
See above. Again, this is dependent on how much memory you have, see [GRAMPS Performance] on wiki.
26. My database is really big. Is there a way around loading all the data into memory?
Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
27. Can I run Gramps from a database on a NFS share?
27. Can I run GRAMPS from a database on a NFS share?
Yes you can.
28. Why is the database format not portable?
The biggest issue with Gramps portability lies with 'transactions'. With
Gramps 2.2, we added support for atomic transactions to protect data.
The biggest issue with GRAMPS portability lies with 'transactions'. With
GRAMPS 2.2, we added support for atomic transactions to protect data.
With atomic transactions, multiple changes are committed as a single
unit. Either all the changes make it, or none of the changes make it.
You are never left in a situation with a partial set of changes. A side
@@ -315,7 +322,7 @@ gramps-devel@lists.sf.net :-)
The next best thing would be to submit a good bug report. This can be done in
one of the two ways: (1) send your report to gramps-bugs@lists.sf.net
or (2) file your report with the bug tracker system at
https://gramps-project.org/bugs/ (this function is also
http://bugs.gramps-project.org (this function is also
available by selecting "Help->Report a bug" from gramps main menu).
A good bug report would include:
@@ -334,24 +341,41 @@ If the above explanations seem vague, please follow this link:
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
30. Gramps should be a .... type of application
30. GRAMPS should be a .... type of application
The surest way to see it happen is to get it done by yourself. Since Gramps is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing Gramps development. If you would like the Gramps project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
The surest way to see it happen is to get it done by yourself. Since GRAMPS is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing GRAMPS development. If you would like the GRAMPS project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
If, however, you would like the Gramps project to adopt your strategy, you would need to convince Gramps developers that your strategy is good for Gramps and superior to the present development strategy.
If, however, you would like the GRAMPS project to adopt your strategy, you would need to convince GRAMPS developers that your strategy is good for GRAMPS and superior to the present development strategy.
HINT: if Gramps developers are still not convinced after about three
HINT: if GRAMPS developers are still not convinced after about three
messages sent to gramps-devel, maybe you are better off on your own
rather than with a company of retards who can't fully realize the
potential of your great idea :-)
==Gramps Webhosting ==
==GRAMPS Webhosting ==
31. How can I publish web sites generated by Gramps?
31. How can I publish web sites generated by GRAMPS?
Since Gramps generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet.
Since GRAMPS generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet, the GRAMPS project can provide space for you at the http://library.gramps-project.org, see the [webhosting article] on wiki.
**** End of Gramps Frequently Asked Questions ****
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
If you wish to submit pages to the GRAMPS library site, you will need to contact the GRAMPS project, typically by sending a message to the gramps-users mailing list. You will then be given a username and password that will allow you to upload your files to the site. After you upload the files (in a gzip'ed tar file), the GRAMPS project will install the pages for you on the site.
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
In order to prevent abuse of the library.gramsp-project.org site, the password given allows uploads only. If you wish to have a username and password combination to restrict read access to your pages, you will need to contact the GRAMPS project, and we could set this up for you. However, the read and write accounts will be separate accounts.
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
The main page on the library.gramps-project.org site will contain an index of the available family sites. However, there will be a unique URL for each site as well.
**** End of GRAMPS Frequently Asked Questions ****
$Id$

4
Gramps.py Executable file → Normal file

@@ -1,4 +1,4 @@
#! /usr/bin/env python3
#! /usr/bin/env python
#
# Gramps - a GTK+/GNOME based genealogy program
#
@@ -25,5 +25,7 @@ able to run gramps from the source directory without setting PYTHONPATH
From this position, import gramps works great
"""
import os
os.environ['GRAMPS_RESOURCES'] = os.path.dirname(os.path.abspath(__file__))
import gramps.grampsapp as app
app.main()

80
INSTALL

@@ -1,55 +1,50 @@
$Id$
This file contains some useful details on the installation from source code
for Gramps. It does not cover installation of a pre-built binary package.
for GRAMPS. It does not cover installation of a pre-built binary package.
For that use your package manager, the rest is already done by the packager.
Uninstall old version
---------------------
If you do a source install in the same place as an existing install,
If you do a source install in the same place of an existing install,
you need to remove the old version first. You can delete the old
version by deleting the installed directories. For example, if your installation prefix is /usr/local, remove the following:
/usr/local/share/gramps
version by deleting the installed directories (for example,
/usr/share/gramps
/usr/local/lib/pythonx.x/site-packages/gramps
If you installed with a package manager you might instead need to remove
/usr/local/lib/pythonx.x/dist-packages/gramps
replacing pythonx.x with the python version you used, e.g. python3.4.
Also remove any gramps .egg files that are installed along with the gramps
directory and the file /usr/local/bin/gramps.
/usr/lib/pythonx.x/site-packages/gramps
/usr/lib/pythonx.x/dist-packages/gramps
where pythonx.x is python2.7 or whatever version you installed gramps with.
Also remove the gramps .egg files that are installed along with the gramps
directory.
If you don't know the list of all files that Gramps installed, you can
reinstall it with the --record option, and take a look at the list this
produces (so python setup.py install --record grampsfiles.txt
Gramps is a python application, so loading happens on reading the
GRAMPS is a python application, so loading happens on reading the
files, meaning that files of a previous version that are no longer
present in the new version can still be loaded, making the new install
unstable!
distutils install
-----------------
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.
We do not check all dependencies of Gramps, see README for a
list of all required and optional dependencies. On running Gramps, errors will
be returned if dependencies are missing.
To build and install, whether from a tarball or git repo:
python3 setup.py build
sudo python3 setup.py install
If you are building from released tarball, you should be able to just
run
You can avoid using sudo for the install step by specifying a prefix to which you have write priviledge. The default is /usr/local, which is usually owned by root. You can learn of more options with
python3 setup.py --help
python setup.py build
python setup.py install
One can use gramps from the command line without installing it by
setting the following environment variables, but that won't provide
things like MIME type and desktop entries.
export PYTHONPATH="/top/grampsdir/gramps:$PYTHONPATH"
export GRAMPS_RESOURCES="/top/grampsdir"
See below for ways to invoke Gramps.
where the last must be done as root. You can work with Gramps if you only build
it by pointing the PYTHONPATH to the build directory, but things like MIME type
and desktop entries will not be created then.
Typical install directories in linux (ubuntu) are:
* /usr/local/lib/python3.4/dist-packages/gramps/ : the gramps python module
* /usr/local/lib/python2.7/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
* /usr/local/share/doc/gramps : documentation, also example .gramps and .gedcom
@@ -62,45 +57,46 @@ Typical install directories in linux (ubuntu) are:
Running Gramps
--------------
Gramps is python only, so no compilation is needed, you can even run gramps
from the source directory.
from the source directory.
a) You installed Gramps, then you can run it with the command
gramps
gramps
b) You installed Gramps, and want to start it from the PYTHONPATH. In this
case use the command:
python3 -c 'from gramps.grampsapp import main; main()'
python -c 'from gramps.grampsapp import main; main()'
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
this for you.
b) You downloaded the Gramps source code to a directory, and want to run it.
You can start Gramps from the source code directory with
python3 Gramps.py
python Gramps.py
See gramps/gen/const.py how Gramps finds its resource directories in case
See gramps/gen/const.py how Gramps finds his resource directories in case
you encounter problems.
Custom directory installation
-------------------------------------
If you would like to install Gramps without being root, or in an
If you would like to install GRAMPS without being root, or in an
alternative location on windows, supply the --root argument to setup.py
For example:
python3 setup.py install --root ~/test
python setup.py install --root ~/test
or
python setup.py install --root ~/test --enable-packager-mode
The last option, --enable-packager-mode, is needed if you want to disable
execution of post-install mime processing. If you don't have root/admin
access, this will be needed
Packager's issues
------------------
There is a MANIFEST.in file to indicate the work needed.
To create a source distribution run:
python3 setup.py sdist
python setup.py sdist
If Gramps is built outside of the source tree in a temporary location (e.g. when
packaging for a distribution), the --resourcepath option can be used to specify
the path to the installed location of the Gramps resources (e.g. /usr/share):
python3 setup.py install --resourcepath=/usr/share

397
LICENSE Normal file

@@ -0,0 +1,397 @@
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.

@@ -1,20 +1,17 @@
include ChangeLog
include AUTHORS
include COPYING
include FAQ
include Gramps.py
include INSTALL
include LICENSE
include MANIFEST.in
include NEWS
include RELEASE_NOTES
include TODO
include CONTRIBUTING
include TestPlan.txt
recursive-include bash *
recursive-include data *
recursive-include debian *
recursive-include docs *
recursive-include example *
recursive-include gramps *
recursive-include help *
recursive-include images *
@@ -25,9 +22,11 @@ recursive-include windows *
# Remove files created in the build
exclude data/tips.xml
exclude data/holidays.xml
exclude gramps/plugins/lib/holidays.xml
exclude po/.intltool-merge-cache
global-exclude *.pyc
global-exclude *.pyo
# Remove directories which should not be included in the distribution
prune gramps/guiQML
#prune gramps/webapp

2252
NEWS

File diff suppressed because it is too large Load Diff

111
README Normal file

@@ -0,0 +1,111 @@
$Id$
Please read the COPYING file first.
If building from source, also read the INSTALL file (at least through the
"SUPER-SHORT VERSION") before going further.
Requirements
--------------------------------
The following packages *MUST* be installed in order for Gramps to work:
Python 2.7 or greater, Python 3.2 or greater (or both python versions)
GTK 3.0 or greater
pygobject 3.3.2 or greater
cairo, pango, pangocairo with introspection bindings (the gi packages)
librsvg2 (svg icon view)
xdg-utils
bsddb3 is required for Python 3.2 (not python 2.7)
The following package is needed for full translation of the interface
to your language:
language-pack-gnome-xx
Translation of GTK elements to your language, with
xx your language code; e.g. for Dutch you need
language-pack-gnome-nl. The translation of the
Gramps strings is included with the gramps source.
The following packages are *STRONGLY RECOMMENDED* to be installed:
osmgpsmap Used to show maps in the geography view.
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
but the Python bindings for this must also be present.
Without this the GeoView will not be active, see
http://gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Main_Window#Geography_Category
!! PACKAGERS: unfortunately, at the moment (March 2013),
the patches which gramps 4.0 needs osm-gps-map to have
are not yet released (as a new osm-gps-map version). The
osm-gps-map sources must be dated 6 February 2013 (or
later) to have the necessary patches. You may obtain
it from: http://nzjrs.github.com/osm-gps-map/ or else
http://sourceforge.net/projects/gramps/files/Dependencies
(The necessary version seems to be 0.8 -- or later.)
GraphViz Enable creation of graphs using GraphViz engine.
Without this, three reports cannot be run.
Obtain it from: http://www.graphviz.org
PyICU Improves localised sorting in Gramps. In particular, this
applies to sorting in the various views and in the
Narrative Web output. It is particularly helpful for
non-Latin characters, for non-English locales and on MS
Windows and Mac OS X platforms. If it is not available,
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.)
The following packages are optional
gtkspell Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
rcs The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
PIL Python Image Library is needed to crop
images and also to convert non-JPG images to
JPG so as to include them in LaTeX output.
(For Python3 a different source may be needed.)
GExiv2 Enables Gramps to manage Exif metadata embedded in your
media. Gramps needs version 0.5 or greater.
See http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
ttf-freefont More font support in the reports
gir-webkit GObject introspection data of WebKit is required for the
hidden view 'Htmlview', which allows websites to be
opened in Gramps. Users can unhide the view in the
plugin manager. A html renderer must be installed to
use the view.
!! PACKAGERS, Test if on your distribution
webkit and Gramps is stable. If you obtain crashes, patch
src/plugins/view/htmlrenderer.py and
src/plugins/view/geoview.gpr.py, so as to remove:
from gi.repository import WebKit as webkit
goocanvas2:
Required for the (user-downloadable) Graphview plugin
No longer needed in 4.0:
pygoocanvas, pygtk, pyexiv2
No longer needed in 3.3:
python-enchant Enchant
No longer needed in 3.2:
python glade bindings
No longer needed in 3.1:
yelp Gnome help browser. At the moment no help is shipped
Documentation
---------------------------------
The User Manual is now maintained on the gramps website,
http://www.gramps-project.org/wiki/index.php?title=User_manual
--------------------------------
The Gramps Project
http://gramps-project.org

148
README.md

@@ -1,148 +0,0 @@
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)
===================
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.
Please read the **INSTALL** file if you intend to build from source.
Requirements
============
The following packages **MUST** be installed in order for Gramps to work:
* **Python** 3.2 or greater - The programming language used by Gramps. https://www.python.org/
* **GTK** 3.10 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
* **pygobject** 3.12 or greater - Python Bindings for GLib/GObject/GIO/GTK+ https://wiki.gnome.org/Projects/PyGObject
The following three packages with GObject Introspection bindings (the gi packages)
* **cairo** 1.13.1 or greater - a 2D graphics library with support for multiple output devices. http://cairographics.org/
* **Pycairo** 1.13.3 or greater - GObject Introspection bindings for cairo. https://github.com/pygobject/pycairo
* **pango** - a library for laying out and rendering of text, with an emphasis on internationalization. http://www.pango.org/
* **pangocairo** - Allows you to use Pango with Cairo http://www.pango.org/
* **librsvg2** - (SVG icon view) a library to render SVG files using cairo. http://live.gnome.org/LibRsvg
* **xdg-utils** - Desktop integration utilities from freedesktop.org
* **bsddb3** - Python bindings for Oracle Berkeley DB https://pypi.python.org/pypi/bsddb3/
* **sqlite3** - Python bindings for SQLite Database library
The following package is needed for full translation of the interface
to your language:
* **language-pack-gnome-xx**
Translation of GTK elements to your language, with
xx your language code; e.g. for Dutch you need
language-pack-gnome-nl. The translation of the
Gramps strings is included with the gramps source.
The following packages are **STRONGLY RECOMMENDED** to be installed:
--------------------------------------------------------------------
* **osmgpsmap**
Used to show maps in the geography view.
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
but the Python bindings for this must also be present, so gir1.2-osmgpsmap-1.0.
Without this the GeoView will not be active, see
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Categories#Geography_Category
* **Graphviz**
Enable creation of graphs using Graphviz engine.
Without this, three reports cannot be run.
Obtain it from: http://www.graphviz.org or try graphviz and python3-pygraphviz from your packages.
* **PyICU**
Improves localised sorting in Gramps. In particular, this
applies to sorting in the various views and in the
Narrative Web output. It is particularly helpful for
non-Latin characters, for non-English locales and on MS
Windows and Mac OS X platforms. If it is not available,
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.
https://pypi.python.org/pypi/PyICU/)
* **Ghostscript**
Used by Graphviz reports to help create PDF's
The following packages are optional:
------------------------------------
* **gtkspell**
Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
* **rcs**
The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
* **PIL**
Python Image Library (PILLOW) is needed to crop
images and also to convert non-JPG images to
JPG so as to include them in LaTeX output.
(For Python3 a different source may be needed,
python-imaging or python-pillow or python3-pillow)
* **GExiv2**
Enables Gramps to manage Exif metadata embedded in your
media. Gramps needs version 0.5 or greater.
See https://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
* **ttf-freefont**
More font support in the reports
Optional packages required by Third-party Addons
------------------------------------------------
**Third-party Addons are written by users and developers and unless stated are not officially part of Gramps.**
For more information about Addons see: https://gramps-project.org/wiki/index.php?title=Third-party_Plugins
Prerequistes required for the following Addons to work:
* **Family Sheet** - Requires: PIL (Python Imaging Library) or PILLOW.
( https://gramps-project.org/wiki/index.php?title=Family_Sheet )
* **Graph View** - Requires: PyGoocanvas and Goocanvas (python-pygoocanvas, gir1.2-goocanvas-2.0).
( https://gramps-project.org/wiki/index.php?title=Graph_View )
* **Network Chart** - Requires: networkx and pygraphviz
( https://gramps-project.org/wiki/index.php?title=NetworkChart )
* **PedigreeChart** - Can optionally use - numpy if installed
( https://gramps-project.org/wiki/index.php?title=PedigreeChart )
No longer needed:
-----------------
* Since Gramps 4.2:
**gir-webkit**
* Since Gramps 4.0:
**pygoocanvas, pygtk, pyexiv2**
* Since Gramps 3.3:
**python-enchant Enchant**
* Since Gramps 3.2:
**python glade bindings**
* Since Gramps 3.1:
**yelp** - Gnome help browser. No offline help is shipped see Gramps website for User manual
Documentation
-------------
The User Manual is maintained on the Gramps website:
* https://www.gramps-project.org/wiki/index.php?title=User_manual

@@ -1,3 +1,4 @@
$Id$
UNSTABLE Gramps 4.0.0 Beta2 release.

@@ -1,23 +0,0 @@
_gramps()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--action --config --create --databases --debug --export --format --help --import --open --options --quiet --remove --show --usage --version --yes -? -C -L -O -a -b -c -d -e -f -i -l -p -q -r -s -t -u -v -y"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
elif [[ ${cur} == --open ]] ; then
local IFS=$'\n'
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
COMPREPLY=( $(compgen --W "${names[*]}" -- ${cur}) )
return 0
else
local IFS=$'\n'
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
COMPREPLY=( $(compgen -W "${names[*]}" -- ${cur}) )
return 0
fi
}
complete -F _gramps gramps

@@ -1,144 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Id$ -->
<authors xmlns:html="http://www.w3.org/1999/xhtml">
<author title="author">
<author uid="rshura" title="author">
Alex Roitman &lt;<html:a href="mailto:shura@gramps-project.org">shura@gramps-project.org</html:a>&gt;
</author>
<author title="contributor">
<author uid="asleinius" title="contributor">
Arturas Sleinius &lt;<html:a href="mailto:asleinius@users.sourceforge.net">asleinius@users.sourceforge.net</html:a>&gt;
</author>
<author title="author">
<author uid="bmcage" title="author">
Benny Malengier &lt;<html:a href="mailto:benny.malengier@gramps-project.org">benny.malengier@gramps-project.org</html:a>&gt;
</author>
<author title="contributor">
<author uid="borilg" title="contributor">
Boril Gourinov &lt;<html:a href="mailto:boril.gourinov@gmail.com">boril.gourinov@gmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="pez4brian" title="author">
Brian Matherly &lt;<html:a href="mailto:brian@gramps-project.org">brian@gramps-project.org</html:a>&gt;
</author>
<author title="author">
<author uid="dallingham" title="author">
Don Allingham &lt;<html:a href="mailto:don@gramps-project.org">don@gramps-project.org</html:a>&gt;
</author>
<author title="author">
<author uid="dpeterso" title="author">
Donald A. Peterson &lt;<html:a href="mailto:"></html:a>&gt;
</author>
<author title="author">
<author uid="dsblank" title="author">
Doug Blank &lt;<html:a href="mailto:doug.blank@gmail.com">doug.blank@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="eerot" title="contributor">
Eero Tamminen &lt;<html:a href="mailto:eerot@users.sourceforge.net">eerot@users.sourceforge.net</html:a>&gt;
</author>
<author title="contributor">
<author uid="erikdrgm" title="contributor">
Erik De Richter &lt;<html:a href="mailto:erikdrgm@users.sourceforge.net">erikdrgm@users.sourceforge.net</html:a>&gt;
</author>
<author title="contributor">
<author uid="espenbe" title="contributor">
Espen Berg &lt;<html:a href="mailto:espenbe@gmail.com">espenbe@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="gburto01" title="contributor">
Gary Burton &lt;<html:a href="mailto:gary.burton@zen.co.uk">gary.burton@zen.co.uk</html:a>&gt;
</author>
<author uid="gbritton" title="contributor">
Gerald Britton &lt;<html:a href="mailto:gerald.britton@gmail.com">gerald.britton@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="jgsack" title="contributor">
James G Sack &lt;<html:a href="mailto:jgsack@san.rr.com">jgsack@san.rr.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Janne Kovesjärvi &lt;<html:a href="mailto:janne.kovesjarvi@gmail.com">janne.kovesjarvi@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Jason Simanek &lt;<html:a href="mailto:jsimanek@gmail.com">jsimanek@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="romjerome" title="contributor">
Jérôme Rapinat &lt;<html:a href="mailto:romjerome@yahoo.fr">romjerome@yahoo.fr</html:a>&gt;
</author>
<author title="contributor">
<author uid="jcreus" title="contributor">
Joan Creus &lt;<html:a href="mailto:joan.creus@gmail.com">joan.creus@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="josip" title="contributor">
Josip Pisoj &lt;<html:a href="mailto:josip@pisoj.com">josip@pisoj.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="jsanchez" title="contributor">
Julio Sánchez &lt;<html:a href="mailto:julio.sanchez@gmail.com">julio.sanchez@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="keesb" title="contributor">
Kees Bakker &lt;<html:a href="mailto:kees.bakker@xs4all.nl">kees.bakker@xs4all.nl</html:a>&gt;
</author>
<author title="contributor">
<author uid="kdorichev" title="contributor">
Konstantin Dorichev &lt;<html:a href="mailto:kdorichev@gmail.com">kdorichev@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Lubo Vasko &lt;<html:a href="mailto:pgval@inMail.sk">pgval@inMail.sk</html:a>&gt;
</author>
<author title="contributor">
<author uid="ltosky" title="contributor">
Luigi Toscano &lt;<html:a href="mailto:luigi.toscano@tiscali.it">luigi.toscano@tiscali.it</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Luiz Gonzaga dos Santos Filho &lt;<html:a href="mailto:lfilho@gmail.com">lfilho@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Łukasz Rymarczyk &lt;<html:a href="mailto:yenidai@poczta.onet.pl">yenidai@poczta.onet.pl</html:a>&gt;
</author>
<author title="contributor">
<author uid="m_d_n" title="contributor">
Michiel Nauta &lt;<html:a href="mailto:m.d.nauta@hetnet.nl">m.d.nauta@hetnet.nl</html:a>&gt;
</author>
<author title="contributor">
<author uid="leonhaeuser" title="contributor">
Mirko Leonhäuser &lt;<html:a href="mailto:mirko@leonhaeuser.de">mirko@leonhaeuser.de</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Morten Bo Johansen &lt;<html:a href="mailto:mbj@spamcop.net">mbj@spamcop.net</html:a>&gt;
</author>
<author title="author">
<author uid="loshawlos" title="author">
Martin Hawlisch &lt;<html:a href="mailto:martin.hawlisch@gmx.de">martin.hawlisch@gmx.de</html:a>&gt;
</author>
<author title="contributor">
<author uid="nick-h" title="contributor">
Nick Hall &lt;<html:a href="mailto:nick__hall@hotmail.com">nick__hall@hotmail.com</html:a>&gt;
</author>
<author title="contributor">
Paul Culley &lt;<html:a href="mailto:paulr2787@gmail.com">paulr2787@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="ldnp" title="contributor">
Peter Landgren &lt;<html:a href="mailto:peter.talken@telia.com">peter.talken@telia.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="acraphae" title="contributor">
Raphael Ackermann &lt;<html:a href="mailto:raphael.ackermann@gmail.com">raphael.ackermann@gmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="hippy" title="author">
Richard Taylor &lt;<html:a href="mailto:rjt-gramps@thegrindstone.me.uk">rjt-gramps@thegrindstone.me.uk</html:a>&gt;
</author>
<author title="contributor">
<author uid="noirauds" title="contributor">
Serge Noiraud &lt;<html:a href="mailto:Serge.Noiraud@free.fr">Serge.Noiraud@free.fr</html:a>&gt;
</author>
<author title="contributor">
<author uid="has_no_svn_access" title="contributor">
Sigmund Lorentsen &lt;<html:a href="mailto:sigmund.lorentsen@tele2.no">sigmund.lorentsen@tele2.no</html:a>&gt;
</author>
<author title="contributor">
<author uid="betula" title="contributor">
Stefan Bjork &lt;<html:a href="mailto:betula@users.sourceforge.net">betula@users.sourceforge.net</html:a>&gt;
</author>
<author title="contributor">
<author uid="s_charette" title="contributor">
Stéphane Charette &lt;<html:a href="mailto:stephanecharette@gmail.com">stephanecharette@gmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="twaugh" title="author">
Tim Waugh &lt;<html:a href="mailto:twaugh@redhat.com">twaugh@redhat.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="vassilii" title="contributor">
Vassilii Khachaturov &lt;<html:a href="mailto:vassilii@tarunz.org">vassilii@tarunz.org</html:a>&gt;
</author>
<author title="contributor">
<author uid="matlas" title="contributor">
Zdeněk Hataš &lt;<html:a href="mailto:zdenek.hatas@gmail.com">zdenek.hatas@gmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="robhealey1" title="author">
Rob G. Healey &lt;<html:a href="mailto:robhealey1@gmail.com">robhealey1@gmail.com</html:a>&gt;
</author>
<author title="contributor">
<author uid="zfoldvar" title="contributor">
Zsolt Foldvari &lt;<html:a href="mailto:zfoldvar@users.sourceforge.net">zfoldvar@users.sourceforge.net</html:a>&gt;
</author>
<author title="contributor">
<author uid="ander882" title="contributor">
Craig J. Anderson &lt;<html:a href="mailto:ander882@hotmail.com">ander882@hotmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="kulath" title="author">
Tim G L Lyons &lt;<html:a href="mailto:tim.g.lyons@gmail.com">tim.g.lyons@gmail.com</html:a>&gt;
</author>
<author title="author">
<author uid="jralls" title="author">
John Ralls &lt;<html:a href="mailto:jralls@ceridwen.us">jralls@ceridwen.us</html:a>&gt;
</author>
</authors>

55
data/css/GeoView.css Normal file

@@ -0,0 +1,55 @@
/*
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright 2009 Serge Noiraud
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# 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.
#
----------------------------------------------------------------------------
GeoView Style Sheet
Style Name: GeoView
Style Author: Serge Noiraud (2009)
----------------------------------------------------------------------------
This file was created for GeoView usage.
# $Id$
GeoView Styles
----------------------------------------------------- */
#geo-map
{
margin-left:0px;
margin-top:0px;
margin-right:auto;
margin-bottom:auto;
}
/* InfoWindow */
#geo-info {
font-size:10pt;
max-height:200px;
max-width: 600px;
min-width: 300px;
text-align: left;
padding-right: 6px;
overflow-x: auto;
overflow-y: auto;
}

@@ -50,6 +50,7 @@ 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.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -86,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -109,7 +104,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
text-decoration: underline;
@@ -331,10 +325,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -426,7 +416,7 @@ div#SourceDetail {
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -451,7 +441,8 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;

@@ -134,6 +134,7 @@ h5, h6 {
margin:1.3em 0 .5em 1em;
}
p#description {
max-width: 800px;
margin: 0;
padding: 1em 20px;
text-indent: 30px;
@@ -288,6 +289,10 @@ table.infolist thead tr th {
table.infolist tr td {
border-bottom: dashed 1px #000;
vertical-align: middle;
padding: 6px 0 6px 10px;
}
table.infolist tr td a {
display: block;
}
table.infolist tr.BeginLetter td, table.infolist tr.BeginSurname td {
border-top: solid 1px #000;
@@ -347,15 +352,15 @@ div#Individuals {
margin: 0;
padding: 0;
}
div#Individuals table.IndividualList {
div#Individuals table.individuallist {
border-bottom: solid 1px #000;
}
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
cursor: default;
background: none;
}
div#Individuals table.IndividualList tbody tr td.ColumnName a {
div#Individuals table.individuallist tbody tr td.ColumnName a {
vertical-align: middle;
}
div#Individuals div table.infolist tr td p {
@@ -489,7 +494,7 @@ table.eventlist tbody tr td.ColumnNotes {
width: 20%;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
width: 17%;
}
table.eventlist tbody tr td.ColumnPerson {
width: 35%;
@@ -1093,6 +1098,7 @@ div.Residence table.infolist tr td {
margin: 0;
float: left;
width: 130px;
height: 150px;
text-align: center;
}
#indivgallery div.thumbnail a {
@@ -1101,7 +1107,6 @@ div.Residence table.infolist tr td {
padding: 0;
text-decoration: none;
cursor: pointer;
word-wrap: break-word;
}
#indivgallery div.thumbnail a img {
padding: 0;
@@ -1125,10 +1130,9 @@ div.narrative {
}
.narrative p {
font: normal .9em/1.4em sans-serif;
margin: 0.1em 0 0.2em 0;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
margin-top: .5em;
margin-bottom: 0;
padding: 0 20px 1em 20px;
}
/* Subsections : References

@@ -50,6 +50,7 @@ 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.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -86,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -109,7 +104,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #9DBF9D;
@@ -254,14 +248,6 @@ table.primobjlist tr.BeginLetter td, table.primobjlist tr.BeginSurname td {
td.ColumnLetter, td.ColumnRowLabel {
font-weight: bold;
}
/* bug #8213 testing by Stephane, 2014-12-6 */
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%;
}
@@ -374,10 +360,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -476,7 +458,7 @@ div#SourceDetail {
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -501,7 +483,8 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;

@@ -50,6 +50,7 @@ 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.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -86,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -110,7 +105,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #E0E0E9
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -469,7 +459,7 @@ div#SourceDetail {
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;

@@ -50,6 +50,7 @@ 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.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -86,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -110,7 +105,6 @@ p#description {
a {
color: #36220B;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFE09F
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -469,7 +459,7 @@ div#SourceDetail {
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;

@@ -50,6 +50,7 @@ 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.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -86,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -110,7 +105,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #EAEEF4
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -469,7 +459,7 @@ div#SourceDetail {
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
----------------------------------------------------- */
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;

@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
Style Name: Web_Citations-Outline.css
******************************************************
# $Id$
Source Citations Outline styles
------------------------------------------------------ */

@@ -18,6 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
*************************************************
GRAMPS Cascading Style Sheet

@@ -18,6 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
*************************************************
GRAMPS Cascading Style Sheet

2
data/css/Web_Horizontal-Menus.css Normal file → Executable file

@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
Style Name: Web_Navigation-Horizontal.css
******************************************************
# $Id$
Body Element
------------------------------------------------------ */
@@ -32,6 +33,7 @@ body {
background-color: #00029D;
color: #00029D;
width: 100%;
padding: 0px 14px;
}
/* Navigation Menus

@@ -54,6 +54,7 @@ Middle images/Web_Mainz_Mid.png
Middle Light images/Web_Mainz_MidLight.png
----------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------
@@ -67,7 +68,7 @@ body {
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
}
body > div {
width: 85%;
width: 950px;
margin: 0px auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
overflow: hidden;
@@ -90,12 +91,6 @@ h1 {
font-style: italic;
margin-left: 2em;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: xx-large;
font-weight: normal;
@@ -119,7 +114,6 @@ h4 {
a {
color: #7D5925;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFFFE7;
@@ -150,7 +144,7 @@ div#nav ul li, #subnavigation ul li {
float: left;
}
div#nav ul li a, #subnavigation ul li a {
display: run-in;
display: block;
padding: 0.4em 0.8em 0.3em 0.8em;
font-size: smaller;
font-family: sans-serif;
@@ -313,10 +307,6 @@ table#SortByCount thead th.ColumnQuantity a:after {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
-----------------------------------------------------------------*/
#GalleryNav {
@@ -437,7 +427,8 @@ div#families table.fixed_subtables table.eventlist th:last-child {
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.5em;
@@ -533,6 +524,7 @@ div#map_canvas {
table.calendar {
table-layout: fixed;
empty-cells: show;
width: 950px;
margin: 0px auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
}

@@ -45,6 +45,7 @@ gray #696969
green #5D835F
--------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------
@@ -114,7 +115,7 @@ h1 {
font:normal 2em/1.2em serif;
}
h2 {
display:block;
display:none;
}
h3 {
font:normal 2em/1.2em serif;
@@ -138,6 +139,7 @@ h5, h6 {
p#description {
color:#542;
max-width:800px;
margin:0;
padding:1em 20px;
background-color:#FFF;
@@ -276,6 +278,7 @@ table.infolist tr th a:hover {
table.infolist tr td {
font:normal 1.1em/1.4em serif;
vertical-align:middle;
padding:.1em 10px;
}
table.infolist tr td a {
display:block;
@@ -395,30 +398,30 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
/* Individuals
----------------------------------------------------- */
#Individuals { }
#Individuals table.IndividualList {
#Individuals table.individuallist {
border-bottom:solid 1px #A97;
}
#Individuals table.IndividualList tbody tr td {
#Individuals table.individuallist tbody tr td {
border-bottom:dashed 1px #C1B398;
}
#Individuals table.IndividualList tbody tr td a:hover {
#Individuals table.individuallist tbody tr td a:hover {
text-decoration:none;
}
table.IndividualList tbody tr td.ColumnSurname a:hover, table.IndividualList tbody tr td.ColumnSurname a:active {
table.individuallist tbody tr td.ColumnSurname a:hover, table.individuallist tbody tr td.ColumnSurname a:active {
cursor:default;
color:black;
background:none;
}
table.IndividualList tbody tr td.ColumnName {
table.individuallist tbody tr td.ColumnName {
padding:0;
background-color:#FFF;
}
table.IndividualList tbody tr td.ColumnName a {
table.individuallist tbody tr td.ColumnName a {
display:block;
padding:.1em .1em;
padding:.6em 10px;
vertical-align:middle;
}
table.IndividualList tbody tr td.ColumnName a:hover {
table.individuallist tbody tr td.ColumnName a:hover {
background-color:#C1B398;
}
#Individuals div table.infolist tr td p {
@@ -576,10 +579,6 @@ table.relationships tbody tr td.ColumnPartner a:hover {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#Gallery { }
@@ -736,7 +735,7 @@ table.download {
width:100%;
}
table.download img {
float:none;
float:center;
}
table.download thead tr th {
text-align:center;
@@ -933,6 +932,7 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0;
float:left;
width:130px;
height:150px;
text-align:center;
}
#indivgallery .thumbnail a {
@@ -940,7 +940,6 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0;
padding:0;
background:none;
word-wrap: break-word;
}
#indivgallery .thumbnail a img {
margin:0;
@@ -963,12 +962,11 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
div.narrative {
padding-bottom:0;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
}
.narrative p {
margin: 0.1em 0 0.2em 0;
font:normal .9em/1.4em sans-serif;
margin-top:.5em;
margin-bottom:0;
padding:0 20px 1em 20px;
}
/* Subsections : References
@@ -1097,7 +1095,7 @@ div#pedigree {
margin-right: 10px;
}
#footer p#copyright img {
margin-right: 10px;
margin-right: 10px[
}
#user_footer {
width: 70%;

@@ -41,6 +41,7 @@ black #000
white #FFF
---------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------

0
data/css/Web_Vertical-Menus.css Normal file → Executable file

@@ -45,6 +45,7 @@ Unknown #000
Males Web_Gender_Male.png
Females Web_Gender_Female.png
# $Id$
NarrativeWeb Styles
-------------------------------------------------------------------------------------------- */
@@ -155,6 +156,7 @@ h5, h6 {
margin:1.3em 0 .5em 1em;
}
p#description {
max-width:800px;
margin:0;
padding:1em 20px;
}
@@ -454,30 +456,30 @@ div#Individuals {
margin: 0;
padding: 0;
}
div#Individuals table.IndividualList {
div#Individuals table.individuallist {
border-bottom: solid 1px #5D835F;
}
div#Individuals table.IndividualList tbody tr td {
div#Individuals table.individuallist tbody tr td {
border-bottom: dashed 1px #5D835F;
background-color: #D8F3D6;
}
div#Individuals table.IndividualList tbody tr td a {
div#Individuals table.individuallist tbody tr td a {
display: block;
padding: .6em 10px;
}
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
cursor:default;
color: #000;
background:none;
}
div#Individuals table.IndividualList tbody tr td.ColumnName {
div#Individuals table.individuallist tbody tr td.ColumnName {
background-color: #FFF;
}
div#Individuals table.IndividualList tbody tr td.ColumnName a {
div#Individuals table.individuallist tbody tr td.ColumnName a {
vertical-align:middle;
}
div#Individuals table.IndividualList tbody tr td.ColumnPartner {
div#Individuals table.individuallist tbody tr td.ColumnPartner {
background-color: #FFF;
}
div#Individuals div table.infolist tr td p {

@@ -45,9 +45,6 @@ Females Web_Gender_Female.png
}
#treeContainer {
position:relative;
display: table-cell;
vertical-align: middle;
overflow: visible;
z-index:1;
}
#treeContainer div.boxbg {

@@ -29,6 +29,7 @@ Style Author: Stephane Charette and Jason Simanek
Image Gallery
-------------
# $Id$
ensure RegionBox <ol> is hidden and has no margins/padding that would shift the image */
ol.RegionBox {

@@ -18,11 +18,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
###################################################### */
body#FamilyMap {
background-color: #000;
padding: 0 14px;
width: 965px;
}
/* Family Maps
@@ -31,11 +33,8 @@ body#FamilyMap {
margin-left: 10px;
margin-right: 10px;
border: solid 4px #000;
margin: 0px auto;
width: 800px;
height: 400px;
max-width: 90%;
max-height: 90%;
width: 931px;
height: 1000px;
}
/* Place Maps
@@ -45,8 +44,6 @@ div#place_canvas {
border: solid 4px #000;
width: 500px;
height: 400px;
max-width: 90%;
max-height: 90%;
}
button#drop {
background-color: purple;

@@ -1,32 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>gramps.desktop</id>
<metadata_license>CC0</metadata_license>
<name>Gramps</name>
<summary>Genealogical research program</summary>
<description>
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
</description>
<url type="homepage">https://gramps-project.org/</url>
<url type="bugtracker">https://gramps-project.org/bugs/</url>
<url type="help">https://gramps-project.org/wiki/index.php?title=Main_page</url>
<project_license>GPL-2.0+</project_license>
<developer_name>Gramps Development Team</developer_name>
<screenshots>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
</screenshots>
<provides>
<binary>gramps</binary>
</provides>
</component>
<application>
<id type="desktop">gramps.desktop</id>
<licence>CC0</licence>
<description>
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
</description>
<url type="homepage">http://gramps-project.org/</url>
<screenshots>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
</screenshots>
</application>

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id$ -->
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-gramps">

@@ -19,6 +19,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
$Id$
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

@@ -21,18 +21,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# $Id$
-->
<!--
This is the Document Type Definition file for v1.7.1
This is the Document Type Definition file for v1.6.0
of the GRAMPS XML genealogy data format.
Please use the following formal public identifier to identify it:
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
For example:
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
[...]>
-->
@@ -61,7 +62,7 @@ DATABASE
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
citations?, sources?, places?, objects?, repositories?,
notes?, bookmarks?, namemaps?)>
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
<!-- ************************************************************
@@ -121,7 +122,6 @@ GENDER has values of M, F, or U.
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
<!ATTLIST name
alt (0|1) #IMPLIED
type CDATA #IMPLIED
@@ -138,8 +138,6 @@ GENDER has values of M, F, or U.
<!ELEMENT familynick (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
<!ATTLIST surname
prefix CDATA #IMPLIED
prim (1|0) #IMPLIED
@@ -198,13 +196,12 @@ FAMILY
<!ELEMENT mother EMPTY>
<!ATTLIST mother hlink IDREF #REQUIRED>
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
<!ELEMENT childref (citationref*,noteref*)>
<!ATTLIST childref
hlink IDREF #REQUIRED
priv (0|1) #IMPLIED
mrel CDATA #IMPLIED
frel CDATA #IMPLIED
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
>
<!ELEMENT type (#PCDATA)>
@@ -251,25 +248,20 @@ PLACES
<!ELEMENT places (placeobj)*>
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
objref*, url*, noteref*, citationref*, tagref*)>
<!ATTLIST placeobj
id CDATA #IMPLIED
handle ID #REQUIRED
priv (0|1) #IMPLIED
change CDATA #REQUIRED
name CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
<!ATTLIST pname
lang CDATA #IMPLIED
value CDATA #REQUIRED
>
<!ELEMENT ptitle (#PCDATA)>
<!ELEMENT code (#PCDATA)>
<!ELEMENT alt_name (#PCDATA)>
<!ELEMENT coord EMPTY>
<!ATTLIST coord

@@ -25,13 +25,13 @@
-->
<!--
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
This is the RELAX NG schema for the Gramps XML genealogy data format.
-->
<grammar
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://gramps-project.org/xml/1.7.1/"
ns="http://gramps-project.org/xml/1.6.0/"
xmlns="http://relaxng.org/ns/structure/1.0">
<start><element name="database">
@@ -210,7 +210,16 @@
</define>
<define name="child-rel">
<text/>
<choice>
<value>Birth</value>
<value>Adopted</value>
<value>Stepchild</value>
<value>Sponsored</value>
<value>Foster</value>
<value>None</value>
<value>Other</value>
<value>Unknown</value>
</choice>
</define>
<define name="name-content">
@@ -221,7 +230,13 @@
<optional><attribute name="priv">
<ref name="priv-content"/>
</attribute></optional>
<optional><attribute name="type"><text/></attribute></optional>
<optional><attribute name="type"><choice>
<value>Unknown</value>
<value>Also Known As</value>
<value>Birth Name</value>
<value>Married Name</value>
<value>Other Name</value>
</choice></attribute></optional>
<optional><attribute name="sort"><text/></attribute></optional>
<optional><attribute name="display"><text/></attribute></optional>
<optional><element name="first"><text/></element></optional>
@@ -250,7 +265,20 @@
<value>1</value>
<value>0</value>
</choice></attribute></optional>
<optional><attribute name="derivation"><text/></attribute></optional>
<optional><attribute name="derivation"><choice>
<value>Unknown</value>
<value>Inherited</value>
<value>Given</value>
<value>Taken</value>
<value>Patronymic</value>
<value>Matronymic</value>
<value>Feudal</value>
<value>Pseudonym</value>
<value>Patrilineal</value>
<value>Matrilineal</value>
<value>Occupation</value>
<value>Location</value>
</choice></attribute></optional>
<optional><attribute name="connector"><text/></attribute></optional>
</define>
@@ -451,12 +479,11 @@
<define name="place-content">
<ref name="primary-object"/>
<attribute name="name"><text/></attribute>
<attribute name="type"><text/></attribute>
<optional><element name="ptitle"><text/></element></optional>
<oneOrMore><element name="pname">
<ref name="placename-content"/>
</element></oneOrMore>
<optional><element name="code"><text/></element></optional>
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
<optional><element name="coord">
<attribute name="long"><text/></attribute>
<attribute name="lat"><text/></attribute>
@@ -745,12 +772,6 @@
<text/>
</define>
<define name="placename-content">
<attribute name="value"><text/></attribute>
<optional><attribute name="lang"><text/></attribute></optional>
<optional><ref name="date-content"/></optional>
</define>
<define name="placeref-content">
<attribute name="hlink"><data type="IDREF"/></attribute>
<optional><ref name="date-content"/></optional>

19
data/javascript/jquery-1.3.2.min.js vendored Normal file

File diff suppressed because one or more lines are too long

9266
data/javascript/jquery-1.7.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

4
data/javascript/jquery-1.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@@ -0,0 +1,859 @@
/*!
* jQuery FlexBox $Version: 0.9.6 $
*
* Copyright (c) 2008-2010 Noah Heldman and Fairway Technologies (http://www.fairwaytech.com/flexbox)
* Licensed under Ms-PL (http://www.codeplex.com/flexbox/license)
*
* $Date: 2010-11-24 01:02:00 PM $
* $Rev: 0.9.6.1 $
*/
(function($) {
$.flexbox = function(div, o) {
// TODO: in straight type-ahead mode (showResults: false), if noMatchingResults, dropdown appears after new match
// TODO: consider having options.mode (select, which replaces html select; combobox; suggest; others?)
// TODO: on resize (at least when wrapping within a table), the arrow is pushed down to the next line
// TODO: check for boundary/value problems (such as minChars of -1) and alert them
// TODO: add options for advanced paging template
// TODO: general cleanup and refactoring, commenting
// TODO: detailed Exception handling, logging
// TODO: FF2, up arrow from bottom has erratic scroll behavior (if multiple flexboxes on page)
// TODO: FF2 (and maybe IE7): if maxVisibleRows == number of returned rows, height is a bit off (maybe set to auto?)
// TODO: escape key only works from input box (this might be okay)
// TODO: make .getJSON parameters (object and callback function) configurable (e.g. when calling yahoo image search)
// TODO: escape key reverts to previous value (FF only?) (is this a good thing?)
// TEST: highlightMatches uses the case of whatever you typed in to replace the match string, which can look funny
// TEST: handle pageDown and pageUp keys when scrolling through results
// TEST: allow client-side paging (return all data initially, set paging:{pageSize:#}, and ensure maxCacheBytes is > 0)
// TEST: accept json object as first parameter to flexbox instead of page source, and have it work like a combobox
// TEST: implement no results template
// TEST: implement noResultsText and class
// TEST: watermark color should be configurable (and so should default input color)
// TEST: exception handling and alerts for common mistakes
// TEST: first example should use defaults ONLY
// TEST: add property initialValue, so you can set it when the flexbox loads
// TEST: handle hidden input value for form submissions
// TEST: how can we allow programmatically setting the field value (and therefore hidden value). add jquery function?
// TEST: use pageSize parameter as threshold to switch from no paging to paging based on results
// TEST: if you type in an input value that matches the html, it might display html code (try typing "class" in the input box)
// TEST: don't require all paging subprops (let default override)
// TEST: when tabbing from one ffb to another, the previous ffb results flash...
// TEST: IE7: when two non-paging ffbs right after each other, with only a clear-both div between them, the bottom ffb jumps down when selecting a value, then jumps back up on mouseover
// TEST: FF2, make sure we scroll to top before showing results (maxVisibleRows only)
// TEST: if maxVisibleRows is hiding the value the user types in to the input, scroll to that value (is this even possible?)
// TEST: make sure caching supports multiple ffbs uniquely
// TEST: when entering a number in the paging input box, the results are displayed twice
var timeout = false, // hold timeout ID for suggestion results to appear
cache = [], // simple array with cacheData key values, MRU is the first element
cacheData = [], // associative array holding actual cached data
cacheSize = 0, // size of cache in bytes (cache up to o.maxCacheBytes bytes)
delim = '\u25CA', // use an obscure unicode character (lozenge) as the cache key delimiter
scrolling = false,
pageSize = o.paging && o.paging.pageSize ? o.paging.pageSize : 0,
retrievingRemoteData = false,
$div = $(div).css('position', 'relative').css('z-index', 0);
// The hiddenField MUST be appended to the div before the input, or IE7 does not shift the dropdown below the input field (it overlaps)
var $hdn = $('<input type="hidden"/>')
.attr('id', $div.attr('id') + '_hidden')
.attr('name', $div.attr('id'))
.val(o.initialId)
.appendTo($div);
var $input = $('<input/>')
.attr('id', $div.attr('id') + '_input')
.attr('autocomplete', 'off')
.addClass(o.inputClass)
.css('width', o.width + 'px')
.appendTo($div)
.click(function(e) {
if (o.watermark !== '' && this.value === o.watermark)
this.value = '';
else
this.select();
})
.focus(function(e) {
$(this).removeClass('watermark');
})
.blur(function(e) {
if (this.value === '') $hdn.val('');
setTimeout(function() { if (!$input.data('active')) hideResults(); }, 200);
})
.keydown(processKeyDown);
if (o.initialValue !== '')
$input.val(o.initialValue).removeClass('watermark');
else
$input.val(o.watermark).addClass('watermark');
var arrowWidth = 0;
if (o.showArrow && o.showResults) {
var arrowClick = function() {
if ($ctr.is(':visible')) {
hideResults();
}
else {
$input.focus();
if (o.watermark !== '' && $input.val() === o.watermark)
$input.val('');
else
$input.select();
if (timeout)
clearTimeout(timeout);
timeout = setTimeout(function() { flexbox(1, true, o.arrowQuery); }, o.queryDelay);
}
};
var $arrow = $('<span></span>')
.attr('id', $div.attr('id') + '_arrow')
.addClass(o.arrowClass)
.addClass('out')
.hover(function() {
$(this).removeClass('out').addClass('over');
}, function() {
$(this).removeClass('over').addClass('out');
})
.mousedown(function() {
$(this).removeClass('over').addClass('active');
})
.mouseup(function() {
$(this).removeClass('active').addClass('over');
})
.click(arrowClick)
.appendTo($div);
arrowWidth = $arrow.width();
$input.css('width', (o.width - arrowWidth) + 'px');
}
if (!o.allowInput) { o.selectFirstMatch = false; $input.click(arrowClick); } // simulate <select> behavior
// Handle presence of CSS Universal Selector (*) that defines padding by verifying what the browser thinks the outerHeight is.
// In FF, the outerHeight() will not pick up the correct input field padding
var inputPad = $input.outerHeight() - $input.height() - 2;
var inputWidth = $input.outerWidth() - 2;
var top = $input.outerHeight();
if (inputPad === 0) {
inputWidth += 4;
top += 4;
}
else if (inputPad !== 4) {
inputWidth += inputPad;
top += inputPad;
}
var $ctr = $('<div></div>')
.attr('id', $div.attr('id') + '_ctr')
.css('width', inputWidth + arrowWidth)
.css('top', top)
.css('left', 0)
.addClass(o.containerClass)
.appendTo($div)
.mousedown(function(e) {
$input.data('active', true);
})
.hide();
var $content = $('<div></div>')
.addClass(o.contentClass)
.appendTo($ctr)
.scroll(function() {
scrolling = true;
});
var $paging = $('<div></div>').appendTo($ctr);
$div.css('height', $input.outerHeight());
function processKeyDown(e) {
// handle modifiers
var mod = 0;
if (typeof (e.ctrlKey) !== 'undefined') {
if (e.ctrlKey) mod |= 1;
if (e.shiftKey) mod |= 2;
} else {
if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
}
// if the keyCode is one of the modifiers, bail out (we'll catch it on the next keypress)
if (/16$|17$/.test(e.keyCode)) return; // 16 = Shift, 17 = Ctrl
var tab = e.keyCode === 9, esc = e.keyCode === 27;
var tabWithModifiers = e.keyCode === 9 && mod > 0;
var backspace = e.keyCode === 8; // we will end up extending the delay time for backspaces...
// tab is a special case, since we want to bubble events...
if (tab) if (getCurr()) selectCurr();
// handling up/down/escape/right arrow/left arrow requires results to be visible
// handling enter requires that AND a result to be selected
if ((/27$|38$|33$|34$/.test(e.keyCode) && $ctr.is(':visible')) ||
(/13$|40$/.test(e.keyCode)) || !o.allowInput) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
switch (e.keyCode) {
case 38: // up arrow
prevResult();
break;
case 40: // down arrow
if ($ctr.is(':visible')) nextResult();
else flexboxDelay(true);
break;
case 13: // enter
if (getCurr()) selectCurr();
else flexboxDelay(true);
break;
case 27: // escape
hideResults();
break;
case 34: // page down
if (!retrievingRemoteData) {
if (o.paging) $('#' + $div.attr('id') + 'n').click();
else nextPage();
}
break;
case 33: // page up
if (!retrievingRemoteData) {
if (o.paging) $('#' + $div.attr('id') + 'p').click();
else prevPage();
}
break;
default:
if (!o.allowInput) { return; }
}
} else if (!esc && !tab && !tabWithModifiers) { // skip esc and tab key and any modifiers
flexboxDelay(false, backspace);
}
}
function flexboxDelay(simulateArrowClick, increaseDelay) {
if (timeout) clearTimeout(timeout);
var delay = increaseDelay ? o.queryDelay * 5 : o.queryDelay;
timeout = setTimeout(function() { flexbox(1, simulateArrowClick, ''); }, delay);
}
function flexbox(p, arrowOrPagingClicked, prevQuery) {
if (arrowOrPagingClicked) prevQuery = '';
var q = prevQuery && prevQuery.length > 0 ? prevQuery : $.trim($input.val());
if (q.length >= o.minChars || arrowOrPagingClicked) {
// If we are getting data from the server, set the height of the content box so it doesn't shrink when navigating between pages, due to the $content.html('') below...
if ($content.outerHeight() > 0)
$content.css('height', $content.outerHeight());
$content.html('').attr('scrollTop', 0);
var cached = checkCache(q, p);
if (cached) {
$content.css('height', 'auto');
displayItems(cached.data, q);
showPaging(p, cached.t);
}
else {
var params = { q: q, p: p, s: pageSize, contentType: 'application/json; charset=utf-8' };
var callback = function(data, overrideQuery) {
if (overrideQuery === true) q = overrideQuery; // must compare to boolean because by default, the string value "success" is passed when the jQuery $.getJSON method's callback is called
var totalResults = parseInt(data[o.totalProperty]);
// Handle client-side paging, if any paging configuration options were specified
if (isNaN(totalResults) && o.paging) {
if (o.maxCacheBytes <= 0) alert('The "maxCacheBytes" configuration option must be greater\nthan zero when implementing client-side paging.');
totalResults = data[o.resultsProperty].length;
var pages = totalResults / pageSize;
if (totalResults % pageSize > 0) pages = parseInt(++pages);
for (var i = 1; i <= pages; i++) {
var pageData = {};
pageData[o.totalProperty] = totalResults;
pageData[o.resultsProperty] = data[o.resultsProperty].splice(0, pageSize);
if (i === 1) totalSize = displayItems(pageData, q);
updateCache(q, i, pageSize, totalResults, pageData, totalSize);
}
}
else {
var totalSize = displayItems(data, q);
updateCache(q, p, pageSize, totalResults, data, totalSize);
}
showPaging(p, totalResults);
$content.css('height', 'auto');
retrievingRemoteData = false;
};
if (typeof (o.source) === 'object') {
if (o.allowInput) callback(filter(o.source, params));
else callback(o.source);
}
else {
retrievingRemoteData = true;
if (o.method.toUpperCase() == 'POST') $.post(o.source, params, callback, 'json');
else $.getJSON(o.source, params, callback);
}
}
} else
hideResults();
}
function filter(data, params) {
var filtered = {};
filtered[o.resultsProperty] = [];
filtered[o.totalProperty] = 0;
var index = 0;
for (var i=0; i < data[o.resultsProperty].length; i++) {
var indexOfMatch = data[o.resultsProperty][i][o.displayValue].toLowerCase().indexOf(params.q.toLowerCase());
if ((o.matchAny && indexOfMatch !== -1) || (!o.matchAny && indexOfMatch === 0)) {
filtered[o.resultsProperty][index++] = data[o.resultsProperty][i];
filtered[o.totalProperty] += 1;
}
}
if (o.paging) {
var start = (params.p - 1) * params.s;
var howMany = (start + params.s) > filtered[o.totalProperty] ? filtered[o.totalProperty] - start : params.s;
filtered[o.resultsProperty] = filtered[o.resultsProperty].splice(start, howMany);
}
return filtered;
}
function showPaging(p, totalResults) {
$paging.html('').removeClass(o.paging.cssClass); // clear out for threshold scenarios
if (o.showResults && o.paging && totalResults > pageSize) {
var pages = totalResults / pageSize;
if (totalResults % pageSize > 0) pages = parseInt(++pages);
outputPagingLinks(pages, p, totalResults);
}
}
function handleKeyPress(e, page, totalPages) {
if (/^13$|^39$|^37$/.test(e.keyCode)) {
if (e.preventDefault)
e.preventDefault();
if (e.stopPropagation)
e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
switch (e.keyCode) {
case 13: // Enter
if (/^\d+$/.test(page) && page > 0 && page <= totalPages)
flexbox(page, true);
else
alert('Please enter a page number between 1 and ' + totalPages);
// TODO: make this alert a function call, and a customizable parameter
break;
case 39: // right arrow
$('#' + $div.attr('id') + 'n').click();
break;
case 37: // left arrow
$('#' + $div.attr('id') + 'p').click();
break;
}
}
}
function handlePagingClick(e) {
flexbox(parseInt($(this).attr('page')), true, $input.attr('pq')); // pq == previous query
return false;
}
function outputPagingLinks(totalPages, currentPage, totalResults) {
// TODO: make these configurable images
var first = '&lt;&lt;',
prev = '&lt;',
next = '&gt;',
last = '&gt;&gt;',
more = '...';
$paging.addClass(o.paging.cssClass);
// set up our base page link element
var $link = $('<a/>')
.attr('href', '#')
.addClass('page')
.click(handlePagingClick),
$span = $('<span></span>').addClass('page'),
divId = $div.attr('id');
// show first page
if (currentPage > 1) {
$link.clone(true).attr('id', divId + 'f').attr('page', 1).html(first).appendTo($paging);
$link.clone(true).attr('id', divId + 'p').attr('page', currentPage - 1).html(prev).appendTo($paging);
}
else {
$span.clone(true).html(first).appendTo($paging);
$span.clone(true).html(prev).appendTo($paging);
}
if (o.paging.style === 'links') {
var maxPageLinks = o.paging.maxPageLinks;
// show page numbers
if (totalPages <= maxPageLinks) {
for (var i = 1; i <= totalPages; i++) {
if (i === currentPage) {
$span.clone(true).html(currentPage).appendTo($paging);
}
else {
$link.clone(true).attr('page', i).html(i).appendTo($paging);
}
}
}
else {
if ((currentPage + parseInt(maxPageLinks / 2)) > totalPages) {
startPage = totalPages - maxPageLinks + 1;
}
else {
startPage = currentPage - parseInt(maxPageLinks / 2);
}
if (startPage > 1) {
$link.clone(true).attr('page', startPage - 1).html(more).appendTo($paging);
}
else {
startPage = 1;
}
for (var i = startPage; i < startPage + maxPageLinks; i++) {
if (i === currentPage) {
$span.clone(true).html(i).appendTo($paging);
}
else {
$link.clone(true).attr('page', i).html(i).appendTo($paging);
}
}
if (totalPages > (startPage + maxPageLinks)) {
$link.clone(true).attr('page', i).html(more).appendTo($paging);
}
}
}
else if (o.paging.style === 'input') {
var $pagingBox = $('<input/>')
.addClass('box')
.click(function(e) {
this.select();
})
.keypress(function(e) {
return handleKeyPress(e, this.value, totalPages);
})
.val(currentPage)
.appendTo($paging);
}
if (currentPage < totalPages) {
$link.clone(true).attr('id', divId + 'n').attr('page', +currentPage + 1).html(next).appendTo($paging);
$link.clone(true).attr('id', divId + 'l').attr('page', totalPages).html(last).appendTo($paging);
}
else {
$span.clone(true).html(next).appendTo($paging);
$span.clone(true).html(last).appendTo($paging);
}
var startingResult = (currentPage - 1) * pageSize + 1;
var endingResult = (startingResult > (totalResults - pageSize)) ? totalResults : startingResult + pageSize - 1;
if (o.paging.showSummary) {
var summaryData = {
"start": startingResult,
"end": endingResult,
"total": totalResults,
"page": currentPage,
"pages": totalPages
};
var html = o.paging.summaryTemplate.applyTemplate(summaryData);
$('<br/>').appendTo($paging);
$('<span></span>')
.addClass(o.paging.summaryClass)
.html(html)
.appendTo($paging);
}
}
function checkCache(q, p) {
var key = q + delim + p; // use null character as delimiter
if (cacheData[key]) {
for (var i = 0; i < cache.length; i++) { // TODO: is it possible to not loop here?
if (cache[i] === key) {
// pull out the matching element (splice), and add it to the beginning of the array (unshift)
cache.unshift(cache.splice(i, 1)[0]);
return cacheData[key];
}
}
}
return false;
}
function updateCache(q, p, s, t, data, size) {
if (o.maxCacheBytes > 0) {
while (cache.length && (cacheSize + size > o.maxCacheBytes)) {
var cached = cache.pop();
cacheSize -= cached.size;
}
var key = q + delim + p; // use null character as delimiter
cacheData[key] = {
q: q,
p: p,
s: s,
t: t,
size: size,
data: data
}; // add the data to the cache at the hash key location
cache.push(key); // add the key to the MRU list
cacheSize += size;
}
}
function displayItems(d, q) {
var totalSize = 0, itemCount = 0;
if (!d)
return;
$hdn.val($input.val());
if (parseInt(d[o.totalProperty]) === 0 && o.noResultsText && o.noResultsText.length > 0) {
$content.addClass(o.noResultsClass).html(o.noResultsText);
$ctr.show();
return;
} else $content.removeClass(o.noResultsClass);
for (var i = 0; i < d[o.resultsProperty].length; i++) {
var data = d[o.resultsProperty][i],
result = o.resultTemplate.applyTemplate(data),
exactMatch = q === result,
selectedMatch = false,
hasHtmlTags = false,
match = data[o.displayValue];
if (!exactMatch && o.highlightMatches && q !== '') {
var pattern = q,
highlightStart = match.toLowerCase().indexOf(q.toLowerCase()),
replaceString = '<span class="' + o.matchClass + '">' + match.substr(highlightStart,q.length) + '</span>';
if (result.match('<(.|\n)*?>')) { // see if the content contains html tags
hasHtmlTags = true;
pattern = '(>)([^<]*?)(' + q + ')((.|\n)*?)(<)'; // TODO: look for a better way
replaceString = '$1$2<span class="' + o.matchClass + '">$3</span>$4$6';
}
result = result.replace(new RegExp(pattern.replace("[", "\\["), o.highlightMatchesRegExModifier), replaceString);
}
// write the value of the first match to the input box, and select the remainder,
// but only if autoCompleteFirstMatch is set, and there are no html tags in the response
if (o.autoCompleteFirstMatch && !hasHtmlTags && i === 0) {
if (q.length > 0 && match.toLowerCase().indexOf(q.toLowerCase()) === 0) {
$input.attr('pq', q); // pq == previous query
$hdn.val(data[o.hiddenValue]);
$input.val(data[o.displayValue]);
selectedMatch = selectRange(q.length, $input.val().length);
}
}
if (!o.showResults) return;
$row = $('<div></div>')
.attr('id', data[o.hiddenValue])
.attr('val', data[o.displayValue])
.addClass('row')
.html(result)
.appendTo($content);
if (exactMatch || (++itemCount == 1 && o.selectFirstMatch) || selectedMatch) {
$row.addClass(o.selectClass);
}
totalSize += result.length;
}
if (totalSize === 0) {
hideResults();
return;
}
$ctr.parent().css('z-index', 11000);
$ctr.show();
$content
.children('div')
.mouseover(function() {
$content.children('div').removeClass(o.selectClass);
$(this).addClass(o.selectClass);
})
.mouseup(function(e) {
e.preventDefault();
e.stopPropagation();
selectCurr();
});
if (o.maxVisibleRows > 0) {
var maxHeight = $row.outerHeight() * o.maxVisibleRows;
$content.css('max-height', maxHeight);
}
return totalSize;
}
function selectRange(s, l) {
var tb = $input[0];
if (tb.createTextRange) {
var r = tb.createTextRange();
r.moveStart('character', s);
r.moveEnd('character', l - tb.value.length);
r.select();
} else if (tb.setSelectionRange) {
tb.setSelectionRange(s, l);
}
tb.focus();
return true;
}
String.prototype.applyTemplate = function(d) {
try {
if (d === '') return this;
return this.replace(/{([^{}]*)}/g,
function(a, b) {
var r;
if (b.indexOf('.') !== -1) { // handle dot notation in {}, such as {Thumbnail.Url}
var ary = b.split('.');
var obj = d;
for (var i = 0; i < ary.length; i++)
obj = obj[ary[i]];
r = obj;
}
else
r = d[b];
if (typeof r === 'string' || typeof r === 'number') return r; else throw (a);
}
);
} catch (ex) {
alert('Invalid JSON property ' + ex + ' found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.');
}
};
function hideResults() {
$input.data('active', false); // for input blur
$div.css('z-index', 0);
$ctr.hide();
}
function getCurr() {
if (!$ctr.is(':visible'))
return false;
var $curr = $content.children('div.' + o.selectClass);
if (!$curr.length)
$curr = false;
return $curr;
}
function selectCurr() {
$curr = getCurr();
if ($curr) {
$hdn.val($curr.attr('id'));
$input.val($curr.attr('val')).focus();
hideResults();
if (o.onSelect) {
o.onSelect.apply($input[0]);
}
}
}
function supportsGetBoxObjectFor() {
try {
document.getBoxObjectFor(document.body);
return true;
}
catch (e) {
return false;
}
}
function supportsGetBoundingClientRect() {
try {
document.body.getBoundingClientRect();
return true;
}
catch (e) {
return false;
}
}
function nextPage() {
$curr = getCurr();
if ($curr && $curr.next().length > 0) {
$curr.removeClass(o.selectClass);
for (var i = 0; i < o.maxVisibleRows; i++) {
if ($curr.next().length > 0) {
$curr = $curr.next();
}
}
$curr.addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop');
$content.attr('scrollTop', scrollPos + $content.height());
}
else if (!$curr)
$content.children('div:first-child').addClass(o.selectClass);
}
function prevPage() {
$curr = getCurr();
if ($curr && $curr.prev().length > 0) {
$curr.removeClass(o.selectClass);
for (var i = 0; i < o.maxVisibleRows; i++) {
if ($curr.prev().length > 0) {
$curr = $curr.prev();
}
}
$curr.addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop');
$content.attr('scrollTop', scrollPos - $content.height());
}
else if (!$curr)
$content.children('div:last-child').addClass(o.selectClass);
}
function nextResult() {
$curr = getCurr();
if ($curr && $curr.next().length > 0) {
$curr.removeClass(o.selectClass).next().addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop'),
curr = $curr[0], parentBottom, bottom, height;
if (supportsGetBoxObjectFor()) {
parentBottom = document.getBoxObjectFor($content[0]).y + $content.attr('offsetHeight');
bottom = document.getBoxObjectFor(curr).y + $curr.attr('offsetHeight');
height = document.getBoxObjectFor(curr).height;
}
else if (supportsGetBoundingClientRect()) {
parentBottom = $content[0].getBoundingClientRect().bottom;
var rect = curr.getBoundingClientRect();
bottom = rect.bottom;
height = bottom - rect.top;
}
if (bottom >= parentBottom)
$content.attr('scrollTop', scrollPos + height);
}
else if (!$curr)
$content.children('div:first-child').addClass(o.selectClass);
}
function prevResult() {
$curr = getCurr();
if ($curr && $curr.prev().length > 0) {
$curr.removeClass(o.selectClass).prev().addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop'),
curr = $curr[0],
parent = $curr.parent()[0],
parentTop, top, height;
if (supportsGetBoxObjectFor()) {
height = document.getBoxObjectFor(curr).height;
parentTop = document.getBoxObjectFor($content[0]).y - (height * 2); // TODO: this is not working when i add another control...
top = document.getBoxObjectFor(curr).y - document.getBoxObjectFor($content[0]).y;
}
else if (supportsGetBoundingClientRect()) {
parentTop = parent.getBoundingClientRect().top;
var rect = curr.getBoundingClientRect();
top = rect.top;
height = rect.bottom - top;
}
if (top <= parentTop)
$content.attr('scrollTop', scrollPos - height);
}
else if (!$curr)
$content.children('div:last-child').addClass(o.selectClass);
}
};
$.fn.flexbox = function(source, options) {
if (!source)
return;
try {
var defaults = $.fn.flexbox.defaults;
var o = $.extend({}, defaults, options);
for (var prop in o) {
if (defaults[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
}
o.source = source;
if (options) {
o.paging = (options.paging || options.paging == null) ? $.extend({}, defaults.paging, options.paging) : false;
for (var prop in o.paging) {
if (defaults.paging[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
}
if (options.displayValue && !options.hiddenValue) {
o.hiddenValue = options.displayValue;
}
}
this.each(function() {
new $.flexbox(this, o);
});
return this;
} catch (ex) {
if (typeof ex === 'object') alert(ex.message); else alert(ex);
}
};
// plugin defaults - added as a property on our plugin function so they can be set independently
$.fn.flexbox.defaults = {
method: 'GET', // One of 'GET' or 'POST'
queryDelay: 100, // num of milliseconds before query is run.
allowInput: true, // set to false to disallow the user from typing in queries
containerClass: 'ffb',
contentClass: 'content',
selectClass: 'ffb-sel',
inputClass: 'ffb-input',
arrowClass: 'ffb-arrow',
matchClass: 'ffb-match',
noResultsText: 'No matching results', // text to show when no results match the query
noResultsClass: 'ffb-no-results', // class to apply to noResultsText
showResults: true, // whether to show results at all, or just typeahead
selectFirstMatch: true, // whether to highlight the first matching value
autoCompleteFirstMatch: false, // whether to complete the first matching value in the input box
highlightMatches: true, // whether all matches within the string should be highlighted with matchClass
highlightMatchesRegExModifier: 'i', // 'i' for case-insensitive, 'g' for global (all occurrences), or combine
matchAny: true, // for client-side filtering ONLY, match any occurrence of the search term in the result (e.g. "ar" would find "area" and "cart")
minChars: 1, // the minimum number of characters the user must enter before a search is executed
showArrow: true, // set to false to simulate google suggest
arrowQuery: '', // the query to run when the arrow is clicked
onSelect: false, // function to run when a result is selected
maxCacheBytes: 32768, // in bytes, 0 means caching is disabled
resultTemplate: '{name}', // html template for each row (put json properties in curly braces)
displayValue: 'name', // json element whose value is displayed on select
hiddenValue: 'id', // json element whose value is submitted when form is submitted
initialValue: '', // what should the value of the input field be when the form is loaded?
initialId: '', // what should the value of the hidden field be when the form is loaded?
watermark: '', // text that appears when flexbox is loaded, if no initialValue is specified. style with css class '.ffb-input.watermark'
width: 200, // total width of flexbox. auto-adjusts based on showArrow value
resultsProperty: 'results', // json property in response that references array of results
totalProperty: 'total', // json property in response that references the total results (for paging)
maxVisibleRows: 0, // default is 0, which means it is ignored. use either this, or paging.pageSize
paging: {
style: 'input', // or 'links'
cssClass: 'paging', // prefix with containerClass (e.g. .ffb .paging)
pageSize: 10, // acts as a threshold. if <= pageSize results, paging doesn't appear
maxPageLinks: 5, // used only if style is 'links'
showSummary: true, // whether to show 'displaying 1-10 of 200 results' text
summaryClass: 'summary', // class for 'displaying 1-10 of 200 results', prefix with containerClass
summaryTemplate: 'Displaying {start}-{end} of {total} results' // can use {page} and {pages} as well
}
};
$.fn.setValue = function(val) {
var id = '#' + this.attr('id');
$(id + '_hidden,' + id + '_input').val(val).removeClass('watermark');
};
})(jQuery);

10
data/javascript/jquery.flexbox.min.js vendored Normal file

File diff suppressed because one or more lines are too long

@@ -0,0 +1,36 @@
<%@ Page Language="VB" ValidateRequest="false" AutoEventWireup="false" CodeFile="AutoPostTest.aspx.vb" Inherits="PostTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.js"></script>
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<script type="text/javascript">
$(function() {
$("textarea").htmlarea(); // Initialize jHtmlArea's with all default values
//window.setTimeout(function() { $("form").submit(); }, 3000);
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server" ID="sm1"></asp:ScriptManager>
<asp:Literal runat="server" ID="litText"></asp:Literal><br />
<textarea runat="server" id="txtText" cols="50" rows="15"></textarea>
<input type="submit" value='manual submit' />
<br />
<asp:Button runat="server" ID="btnSubmit" Text="asp:Button" />
<asp:LinkButton runat="server" ID="lbSubmit" Text="asp:LinkButton"></asp:LinkButton>
</div>
</form>
</body>
</html>

@@ -0,0 +1,9 @@

Partial Class PostTest
Inherits System.Web.UI.Page
Public Sub PostTest_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
txtText.Value = Request("txtText")
litText.Text = txtText.Value
End Sub
End Class

@@ -0,0 +1,89 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.min.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<script type="text/javascript" src="scripts/jHtmlArea.ColorPickerMenu-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.ColorPickerMenu.css" />
<style type="text/css">
div.jHtmlArea { border: solid 1px #ccc; }
</style>
</head>
<body>
<h3>jHtmlArea Live Demo - jHtmlAreaColorPickerMenu Example</h3>
<p>The jHtmlAreaColorPickerMenu plugin/extension allows you to show a simple Color Picker Menu when the user clicks on the "forecolor" Toolbar Button.</p>
<p>
<a href="http://jhtmlarea.codeplex.com">jHtmlArea Project Homepage</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/Release/ProjectReleases.aspx">Downloads</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/Thread/List.aspx">Discussions</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/WorkItem/List.aspx">Issue Tracker</a>
</p>
<script type="text/javascript">
//// You can also override the "default" colors option of the jHtmlAreaColorPickerMenu
//// to show only the specific colors you want.
// jHtmlAreaColorPickerMenu.defaultOptions.colors = ["red", "yellow", "blue", "green", "purple", "white", "black"];
// The followin creates a jHtmlArea and adds a custom list of toolbar buttons.
// Among the buttons is the "forecolor" button that will automatically take
// advantage of the jHtmlAreaColorPickerMenu plugin.
$(function() {
$("#Textarea1").htmlarea({
toolbar: ["html", "|",
"forecolor", // <-- Add the "forecolor" Toolbar Button
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
});
});
</script>
<textarea id="Textarea1" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<hr />
The jHtmlAreaColorPickerMenu object can also be reused for other purposes. For example clicking on the button below will allow you to change the background color of the page.
<br />
<input id="choosecolor" type="button" value="Choose Color..." />
<script type="text/javascript">
$(function() {
$("#choosecolor").click(function() {
jHtmlAreaColorPickerMenu(this, {
colorChosen: function(color) {
$(document.body).css('background-color', color);
}
});
});
});
</script>
<br /><br /><br /><br /><br />
<hr />
<div style="position: relative;border: solid 30px #cccccc;">
<h3>Editor within a "position: relative" DIV element.</h3>
<textarea id="txtInDiv" cols="50" rows="15">Some <b>Test</b> content.</textarea>
<script type="text/javascript">
$(function() {
$("#txtInDiv").htmlarea({
toolbar: ["html", "|",
"forecolor", // <-- Add the "forecolor" Toolbar Button
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
});
});
</script>
</div>
</body>
</html>

128
data/jhtmlarea/Default.htm Normal file

@@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.7.2.custom.min.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jqueryui/ui-lightness/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<style type="text/css">
/* body { background: #ccc;} */
div.jHtmlArea .ToolBar ul li a.custom_disk_button
{
background: url(images/disk.png) no-repeat;
background-position: 0 0;
}
div.jHtmlArea { border: solid 1px #ccc; }
</style>
</head>
<body>
<script type="text/javascript">
// You can do this to perform a global override of any of the "default" options
// jHtmlArea.fn.defaultOptions.css = "jHtmlArea.Editor.css";
$(function() {
//$("textarea").htmlarea(); // Initialize all TextArea's as jHtmlArea's with default values
$("#txtDefaultHtmlArea").htmlarea(); // Initialize jHtmlArea's with all default values
$("#txtCustomHtmlArea").htmlarea({
// Override/Specify the Toolbar buttons to show
toolbar: [
["bold", "italic", "underline", "|", "forecolor"],
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
["link", "unlink", "|", "image"],
[{
// This is how to add a completely custom Toolbar Button
css: "custom_disk_button",
text: "Save",
action: function(btn) {
// 'this' = jHtmlArea object
// 'btn' = jQuery object that represents the <A> "anchor" tag for the Toolbar Button
alert('SAVE!\n\n' + this.toHtmlString());
}
}]
],
// Override any of the toolbarText values - these are the Alt Text / Tooltips shown
// when the user hovers the mouse over the Toolbar Buttons
// Here are a couple translated to German, thanks to Google Translate.
toolbarText: $.extend({}, jHtmlArea.defaultOptions.toolbarText, {
"bold": "fett",
"italic": "kursiv",
"underline": "unterstreichen"
}),
// Specify a specific CSS file to use for the Editor
css: "style//jHtmlArea.Editor.css",
// Do something once the editor has finished loading
loaded: function() {
//// 'this' is equal to the jHtmlArea object
//alert("jHtmlArea has loaded!");
//this.showHTMLView(); // show the HTML view once the editor has finished loading
}
});
});
</script>
<textarea id="txtDefaultHtmlArea" cols="50" rows="15"><p><h3>Test H3</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<input type="button" value="Alert HTML" onclick="alert($('#txtDefaultHtmlArea').htmlarea('toHtmlString'));" />
<input type="button" value="Change Color to Blue" onclick="$('#txtDefaultHtmlArea').htmlarea('forecolor', 'blue');" />
<br /><hr /><br />
<textarea id="txtCustomHtmlArea" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<input type="button" id="btnRemoveCustomHtmlArea" value="Remove jHtmlArea" />
<script type="text/javascript">
$(function() {
$("#btnRemoveCustomHtmlArea").click(function() {
$("#txtCustomHtmlArea").htmlarea("dispose");
});
});
</script>
<input type="button" id="btnResetCustomHtmlArea" value="Reset To Default Options" />
<script type="text/javascript">
$(function() {
$("#btnResetCustomHtmlArea").click(function() {
$("#txtCustomHtmlArea").htmlarea("dispose");
$("#txtCustomHtmlArea").htmlarea();
});
});
</script>
<br /><hr /><br />
<h3>Use jHtmlArea within jQuery UI Dialog</h3>
<script type="text/javascript">
$.ui.dialog.defaults.bgiframe = true;
$(function() {
$("#dialogShowButton").click(function() {
$("#dialog").dialog({width: 420});
$("#dialogEditor").htmlarea();
});
});
</script>
<input type="button" id="dialogShowButton" value="Show Dialog with jHtmlArea Editor" />
<div id="dialog" title="Basic dialog" style="display: none">
Basic jHtmlArea within jQuery UI Dialog
<br />
<textarea id="dialogEditor" rows="10" style="width: 400px">Some <b>Basic</b> text.</textarea>
</div>
<p>To see a "proper" example of the "Font Color" button, you'll want to see the "<a href="ColorPickerMenu.htm">jHtmlAreaColorPickerMenu</a>" in action here: <a href="ColorPickerMenu.htm">ColorPickerMenu.htm</a></p>
</body>
</html>

117
data/jhtmlarea/Readme.txt Normal file

@@ -0,0 +1,117 @@
/* jHtmlArea - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
EXAMPLE USAGE:
-----------------------
See "Default.htm" for example usages.
Or, check out http://jhtmlarea.codeplex.com
CHANGE LOG
-----------------------
v0.7.0
- Fixed ColorPickerMenu positioning when placed within a "position: relative"
div element.
- Fixed ColorPickerMenu to auto-hide after a short delay (1 second) once the
user moves the mouse off the menu.
- Fixed Form Submit issue that caused the text to not be posted. Also fixed a
related issue with ASP.NET Postbacks.
- Added jHtmlArea.p method and "paragraph" functionality + toolbar button
This allows the user to change the formatting from <H1>, <H2>, etc. to <P>
- Added an "Automatic" color option to the ColorPickerMenu.
v0.6.0
- Hide All Toolbar buttons except the "html" button when entering
HTML Source view (via clicking "html" button or executing
jHtmlArea.showHTMLView). When toggling view back to the WYSIWYG editor
all other buttons will then be shown again.
- Added jHtmlArea.dispose method - Allows you to remove the WYSIWYG
editor, and go back to having a plain TextArea. Beware, there is a
memory leak when using this method; it's not too bad, but you want
to call this as few a number of times if you can. The memory leak
is due to the way the browsers handle removing DOM Elements.
- Added Indent and Outdent functionality - This includes toolbar buttons
and jHtmlArea.indent and jHtmlArea.outdent buttons.
- Added justifyLeft, justifyCenter, justifyRight functionality and toolbar
buttons.
- Added insertHorizontalRule functionality and toolbar button. This adds a
<hr> tag to the currently selected area.
- Added an "alias" method for jHtmlArea.execCommand named "ec" to help reduce the
file size of the script.
- Added increaseFontSize and decreaseFontSize functionality and toolbar buttons.
The increaseFontSize and decreaseFontSize doesn't currently work in Safari.
- Added forecolor functionality - Changes a font color for the selection or at the
insertion point. Requires a color value string to be passed in as a value argument.
- Fixed bug in jHtmlArea.toString method
- Added jHtmlArea.queryCommandValue method and it's alias "jHtmlArea.qc"
- Added the jHtmlAreaColorPickerMenu plugin/extension that resides within the
"jHtmlAreaColorPickerMenu.js" file. This file includes a somewhat generic color
picker menu that can be used for any purpose, plus it includes the code to wire
up and override the "stock" jHtmlColor.forecolor functionality and inject the new
Color Picker Menu functionality in it's place when you click on the "forecolor"
toolbar button.
- Changed the "execCommand" and "ec" second parameter to default to "false" if not
specified, and third parameter to default to "null" if not specified. This helps to
reduce the overall file size of the script.
- Added support for Toolbar Button Grouping, now with the additional buttons included
in this release, or even when any custom buttons are used, they will be able to display
nicely by "auto-wrapping" to the next line.
- Added a gradient background to the Toolbar Button Groups, with a slight reverse
gradient on the Buttons when the mouse is hovered over.
v0.5.0 - Initial Release
ICONS / IMAGES:
-----------------------
Some of the Icons within the jHtmlArea.png file are from the
Silk icon set at www.famfamfam.com.
They are licensed under the following license:
Silk icon set 1.3
_________________________________________
Mark James
http://www.famfamfam.com/lab/icons/silk/
_________________________________________
This work is licensed under a
Creative Commons Attribution 2.5 License.
[ http://creativecommons.org/licenses/by/2.5/ ]
This means you may use it for any purpose,
and make any changes you like.
All I ask is that you include a link back
to this page in your credits.
Are you using this icon set? Send me an email
(including a link or picture if available) to
mjames@gmail.com
Any other questions about this icon set please
contact mjames@gmail.com

Binary file not shown.

After

(image error) Size: 620 B

@@ -0,0 +1,365 @@
/*
* This file has been commented to support Visual Studio Intellisense.
* You should not use this file at runtime inside the browser--it is only
* intended to be used only for design-time IntelliSense. Please use the
* standard jHtmlArea library for all production use.
*/
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(options) {
/// <summary>
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
/// </summary>
/// <param name="options" type="Object">
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
/// </param>
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
/// </param>
/// <param name="options" type="Object">
/// The custom options you want applied to the jHtmlArea that is created. Optional.
/// </param>
/// <field name="defaultOptions" Type="Object">
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
/// </field>
/// <returns type="jHtmlArea" />
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
/// </param>
/// <param name="options" type="Object">
/// Optional. The custom options you want applied to the jHtmlArea that is created.
/// </param>
/// <returns type="jHtmlArea" />
},
execCommand: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
ec: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
queryCommandValue: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
qc: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
getSelectedHTML: function() {
/// <summary>
/// Returns the HTML that is currently selected within the editor.
/// </summary>
/// <returns type="String" />
},
getSelection: function() {
/// <summary>
/// Returns the Browser Selection object that represents the currently selected region of the editor.
/// </summary>
/// <returns type="Object" />
},
getRange: function() {
/// <summary>
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
/// </summary>
/// <returns type="Object" />
},
html: function(v) {
/// <summary>
/// 1: () Returns the HTML text value contained within the editor. 2: (v) Sets the editors value to the HTML text passed in.
/// </summary>
/// <param name="v" type="String">
/// The HTML text to set the editors value to.
/// </param>
},
pasteHTML: function(html) {
/// <summary>
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
/// </summary>
/// <param name="html" type="String">
/// The HTML text to paste/insert.
/// </param>
},
cut: function() {
/// <summary>
/// Copies the current selection to the clipboard and then deletes it.
/// </summary>
},
copy: function() {
/// <summary>
/// Copies the current selection to the clipboard.
/// </summary>
},
paste: function() {
/// <summary>
/// Overwrites the contents of the clipboard on the current selection.
/// </summary>
},
bold: function() {
/// <summary>
/// Toggles the current selection between bold and nonbold.
/// </summary>
},
italic: function() {
/// <summary>
/// Toggles the current selection between italic and nonitalic.
/// </summary>
},
underline: function() {
/// <summary>
/// Toggles the current selection between underlined and not underlined.
/// </summary>
},
strikeThrough: function() {
/// <summary>
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
/// </summary>
},
image: function(url) {
/// <summary>
/// This command will insert an image (referenced by url) at the insertion point.
/// If no URL is specified, a prompt will be displayed to the user.
/// </summary>
/// <param name="url" type="String">
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
/// </param>
},
removeFormat: function() {
/// <summary>
/// Removes the formatting tags from the current selection.
/// </summary>
},
link: function() {
/// <summary>
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
/// </summary>
},
unlink: function() {
/// <summary>
/// Removes any hyperlink from the current selection.
/// </summary>
},
orderedList: function() {
/// <summary>
/// Converts the text selection into an ordered list.
/// </summary>
},
unorderedList: function() {
/// <summary>
/// Converts the text selection into an unordered list.
/// </summary>
},
superscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
/// </summary>
},
subscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
/// </summary>
},
p: function() {
/// <summary>
/// Sets the current block format tag to <P>.
/// </summary>
},
h1: function() {
/// <summary>
/// Sets the current block format tag to <H1>.
/// </summary>
},
h2: function() {
/// <summary>
/// Sets the current block format tag to <H2>.
/// </summary>
},
h3: function() {
/// <summary>
/// Sets the current block format tag to <H3>.
/// </summary>
},
h4: function() {
/// <summary>
/// Sets the current block format tag to <H4>.
/// </summary>
},
h5: function() {
/// <summary>
/// Sets the current block format tag to <H5>.
/// </summary>
},
h6: function() {
/// <summary>
/// Sets the current block format tag to <H6>.
/// </summary>
},
heading: function(h) {
/// <summary>
/// Sets the current block format tag to <H?> tag.
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
/// </summary>
/// <param name="h" type="Number">
/// The Number of Header (<H?>) tag to format the current block with.
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
/// </param>
},
indent: function() {
/// <summary>
/// Indents the selection or insertion point.
/// </summary>
},
outdent: function() {
/// <summary>
/// Outdents the selection or insertion point.
/// </summary>
},
insertHorizontalRule: function() {
/// <summary>
/// Inserts a horizontal rule at the insertion point (deletes selection).
/// </summary>
},
justifyLeft: function() {
/// <summary>
/// Justifies the selection or insertion point to the left.
/// </summary>
},
justifyCenter: function() {
/// <summary>
/// Centers the selection or insertion point.
/// </summary>
},
justifyRight: function() {
/// <summary>
/// Right-justifies the selection or the insertion point.
/// </summary>
},
increaseFontSize: function() {
/// <summary>
/// Increases the Font Size around the selection or at the insertion point.
/// </summary>
},
decreaseFontSize: function() {
/// <summary>
/// Decreases the Font Size around the selection or at the insertion point.
/// </summary>
},
forecolor: function(c) {
/// <summary>
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
/// </summary>
},
formatBlock: function(v) {
/// <summary>
/// Sets the current block format tag.
/// </summary>
},
showHTMLView: function() {
/// <summary>
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
/// </summary>
},
hideHTMLView: function() {
/// <summary>
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
/// </summary>
},
toggleHTMLView: function() {
/// <summary>
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
/// </summary>
},
toHtmlString: function() {
/// <summary>
/// Returns the HTML text contained within the editor.
/// </summary>
/// <returns type="String" />
},
toString: function() {
/// <summary>
/// Return the Text contained within the editor, with all HTML tags removed.
/// </summary>
/// <returns type="String" />
},
updateTextArea: function() {
/// <summary>
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
/// </summary>
},
updateHtmlArea: function() {
/// <summary>
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
/// </summary>
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
})(jQuery);

@@ -0,0 +1,403 @@
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(opts) {
if (opts && typeof (opts) === "string") {
var args = [];
for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
var htmlarea = jHtmlArea(this[0]);
var f = htmlarea[opts];
if (f) { return f.apply(htmlarea, args); }
}
return this.each(function() { jHtmlArea(this, opts); });
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
if (elem.jquery) {
return jHtmlArea(elem[0]);
}
if (elem.jhtmlareaObject) {
return elem.jhtmlareaObject;
} else {
return new jHtmlArea.fn.init(elem, options);
}
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
if (elem.nodeName.toLowerCase() === "textarea") {
var opts = $.extend({}, jHtmlArea.defaultOptions, options);
elem.jhtmlareaObject = this;
var textarea = this.textarea = $(elem);
var container = this.container = $("<div/>").addClass("jHtmlArea").width(textarea.width()).insertAfter(textarea);
var toolbar = this.toolbar = $("<div/>").addClass("ToolBar").appendTo(container);
priv.initToolBar.call(this, opts);
var iframe = this.iframe = $("<iframe/>").height(textarea.height());
iframe.width(textarea.width() - ($.browser.msie ? 0 : 4));
var htmlarea = this.htmlarea = $("<div/>").append(iframe);
container.append(htmlarea).append(textarea.hide());
priv.initEditor.call(this, opts);
priv.attachEditorEvents.call(this);
// Fix total height to match TextArea
iframe.height(iframe.height() - toolbar.height());
toolbar.width(textarea.width() - 2);
if (opts.loaded) { opts.loaded.call(this); }
}
},
dispose: function() {
this.textarea.show().insertAfter(this.container);
this.container.remove();
this.textarea[0].jhtmlareaObject = null;
},
execCommand: function(a, b, c) {
this.iframe[0].contentWindow.focus();
this.editor.execCommand(a, b || false, c || null);
this.updateTextArea();
},
ec: function(a, b, c) {
this.execCommand(a, b, c);
},
queryCommandValue: function(a) {
this.iframe[0].contentWindow.focus();
return this.editor.queryCommandValue(a);
},
qc: function(a) {
return this.queryCommandValue(a);
},
getSelectedHTML: function() {
if ($.browser.msie) {
return this.getRange().htmlText;
} else {
var elem = this.getRange().cloneContents();
return $("<p/>").append($(elem)).html();
}
},
getSelection: function() {
if ($.browser.msie) {
//return (this.editor.parentWindow.getSelection) ? this.editor.parentWindow.getSelection() : this.editor.selection;
return this.editor.selection;
} else {
return this.iframe[0].contentDocument.defaultView.getSelection();
}
},
getRange: function() {
var s = this.getSelection();
if (!s) { return null; }
//return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
return (s.getRangeAt) ? s.getRangeAt(0) : s.createRange();
},
html: function(v) {
if (v) {
this.pastHTML(v);
} else {
return toHtmlString();
}
},
pasteHTML: function(html) {
this.iframe[0].contentWindow.focus();
var r = this.getRange();
if ($.browser.msie) {
r.pasteHTML(html);
} else if ($.browser.mozilla) {
r.deleteContents();
r.insertNode($((html.indexOf("<") != 0) ? $("<span/>").append(html) : html)[0]);
} else { // Safari
r.deleteContents();
r.insertNode($(this.iframe[0].contentWindow.document.createElement("span")).append($((html.indexOf("<") != 0) ? "<span>" + html + "</span>" : html))[0]);
}
r.collapse(false);
r.select();
},
cut: function() {
this.ec("cut");
},
copy: function() {
this.ec("copy");
},
paste: function() {
this.ec("paste");
},
bold: function() { this.ec("bold"); },
italic: function() { this.ec("italic"); },
underline: function() { this.ec("underline"); },
strikeThrough: function() { this.ec("strikethrough"); },
image: function(url) {
if ($.browser.msie && !url) {
this.ec("insertImage", true);
} else {
this.ec("insertImage", false, (url || prompt("Image URL:", "http://")));
}
},
removeFormat: function() {
this.ec("removeFormat", false, []);
this.unlink();
},
link: function() {
if ($.browser.msie) {
this.ec("createLink", true);
} else {
this.ec("createLink", false, prompt("Link URL:", "http://"));
}
},
unlink: function() { this.ec("unlink", false, []); },
orderedList: function() { this.ec("insertorderedlist"); },
unorderedList: function() { this.ec("insertunorderedlist"); },
superscript: function() { this.ec("superscript"); },
subscript: function() { this.ec("subscript"); },
p: function() {
this.formatBlock("<p>");
},
h1: function() {
this.heading(1);
},
h2: function() {
this.heading(2);
},
h3: function() {
this.heading(3);
},
h4: function() {
this.heading(4);
},
h5: function() {
this.heading(5);
},
h6: function() {
this.heading(6);
},
heading: function(h) {
this.formatBlock($.browser.msie ? "Heading " + h : "h" + h);
},
indent: function() {
this.ec("indent");
},
outdent: function() {
this.ec("outdent");
},
insertHorizontalRule: function() {
this.ec("insertHorizontalRule", false, "ht");
},
justifyLeft: function() {
this.ec("justifyLeft");
},
justifyCenter: function() {
this.ec("justifyCenter");
},
justifyRight: function() {
this.ec("justifyRight");
},
increaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") + 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "larger")[0]);
} else {
this.ec("increaseFontSize", false, "big");
}
},
decreaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") - 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "smaller")[0]);
} else {
this.ec("decreaseFontSize", false, "small");
}
},
forecolor: function(c) {
this.ec("foreColor", false, c || prompt("Enter HTML Color:", "#"));
},
formatBlock: function(v) {
this.ec("formatblock", false, v || null);
},
showHTMLView: function() {
this.updateTextArea();
this.textarea.show();
this.htmlarea.hide();
$("ul li:not(li:has(a.html))", this.toolbar).hide();
$("ul:not(:has(:visible))", this.toolbar).hide();
$("ul li a.html", this.toolbar).addClass("highlighted");
},
hideHTMLView: function() {
this.updateHtmlArea();
this.textarea.hide();
this.htmlarea.show();
$("ul", this.toolbar).show();
$("ul li", this.toolbar).show().find("a.html").removeClass("highlighted");
},
toggleHTMLView: function() {
(this.textarea.is(":hidden")) ? this.showHTMLView() : this.hideHTMLView();
},
toHtmlString: function() {
return this.editor.body.innerHTML;
},
toString: function() {
return this.editor.body.innerText;
},
updateTextArea: function() {
this.textarea.val(this.toHtmlString());
},
updateHtmlArea: function() {
this.editor.body.innerHTML = this.textarea.val();
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
jHtmlArea.defaultOptions = {
toolbar: [
["html"], ["bold", "italic", "underline", "strikethrough", "|", "subscript", "superscript"],
["increasefontsize", "decreasefontsize"],
["orderedlist", "unorderedlist"],
["indent", "outdent"],
["justifyleft", "justifycenter", "justifyright"],
["link", "unlink", "image", "horizontalrule"],
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
["cut", "copy", "paste"]
],
css: null,
toolbarText: {
bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strike-Through",
cut: "Cut", copy: "Copy", paste: "Paste",
h1: "Heading 1", h2: "Heading 2", h3: "Heading 3", h4: "Heading 4", h5: "Heading 5", h6: "Heading 6", p: "Paragraph",
indent: "Indent", outdent: "Outdent", horizontalrule: "Insert Horizontal Rule",
justifyleft: "Left Justify", justifycenter: "Center Justify", justifyright: "Right Justify",
increasefontsize: "Increase Font Size", decreasefontsize: "Decrease Font Size", forecolor: "Text Color",
link: "Insert Link", unlink: "Remove Link", image: "Insert Image",
orderedlist: "Insert Ordered List", unorderedlist: "Insert Unordered List",
subscript: "Subscript", superscript: "Superscript",
html: "Show/Hide HTML Source View"
}
};
var priv = {
toolbarButtons: {
strikethrough: "strikeThrough", orderedlist: "orderedList", unorderedlist: "unorderedList",
horizontalrule: "insertHorizontalRule",
justifyleft: "justifyLeft", justifycenter: "justifyCenter", justifyright: "justifyRight",
increasefontsize: "increaseFontSize", decreasefontsize: "decreaseFontSize",
html: function(btn) {
this.toggleHTMLView();
}
},
initEditor: function(options) {
var edit = this.editor = this.iframe[0].contentWindow.document;
edit.designMode = 'on';
edit.open();
edit.write(this.textarea.val());
edit.close();
if (options.css) {
var e = edit.createElement('link'); e.rel = 'stylesheet'; e.type = 'text/css'; e.href = options.css; edit.getElementsByTagName('head')[0].appendChild(e);
}
},
initToolBar: function(options) {
var that = this;
var menuItem = function(className, altText, action) {
return $("<li/>").append($("<a href='javascript:void(0);'/>").addClass(className).attr("title", altText).click(function() { action.call(that, $(this)); }));
};
function addButtons(arr) {
var ul = $("<ul/>").appendTo(that.toolbar);
for (var i = 0; i < arr.length; i++) {
var e = arr[i];
if ((typeof (e)).toLowerCase() === "string") {
if (e === "|") {
ul.append($('<li class="separator"/>'));
} else {
var f = (function(e) {
// If button name exists in priv.toolbarButtons then call the "method" defined there, otherwise call the method with the same name
var m = priv.toolbarButtons[e] || e;
if ((typeof (m)).toLowerCase() === "function") {
return function(btn) { m.call(this, btn); };
} else {
return function() { this[m](); this.editor.body.focus(); };
}
})(e.toLowerCase());
var t = options.toolbarText[e.toLowerCase()];
ul.append(menuItem(e.toLowerCase(), t || e, f));
}
} else {
ul.append(menuItem(e.css, e.text, e.action));
}
}
};
if (options.toolbar.length !== 0 && priv.isArray(options.toolbar[0])) {
for (var i = 0; i < options.toolbar.length; i++) {
addButtons(options.toolbar[i]);
}
} else {
addButtons(options.toolbar);
}
},
attachEditorEvents: function() {
var t = this;
var fnHA = function() {
t.updateHtmlArea();
};
this.textarea.click(fnHA).
keyup(fnHA).
keydown(fnHA).
mousedown(fnHA).
blur(fnHA);
var fnTA = function() {
t.updateTextArea();
};
$(this.editor.body).click(fnTA).
keyup(fnTA).
keydown(fnTA).
mousedown(fnTA).
blur(fnTA);
$('form').submit(function() { t.toggleHTMLView(); t.toggleHTMLView(); });
//$(this.textarea[0].form).submit(function() { //this.textarea.closest("form").submit(function() {
// Fix for ASP.NET Postback Model
if (window.__doPostBack) {
var old__doPostBack = __doPostBack;
window.__doPostBack = function() {
if (t) {
if (t.toggleHTMLView) {
t.toggleHTMLView();
t.toggleHTMLView();
}
}
return old__doPostBack.apply(window, arguments);
};
}
},
isArray: function(v) {
return v && typeof v === 'object' && typeof v.length === 'number' && typeof v.splice === 'function' && !(v.propertyIsEnumerable('length'));
}
};
})(jQuery);

@@ -0,0 +1,357 @@
/*
* This file has been commented to support Visual Studio Intellisense.
* You should not use this file at runtime inside the browser--it is only
* intended to be used only for design-time IntelliSense. Please use the
* standard jHtmlArea library for all production use.
*/
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(options) {
/// <summary>
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
/// </summary>
/// <param name="options" type="Object">
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
/// </param>
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
/// </param>
/// <param name="options" type="Object">
/// The custom options you want applied to the jHtmlArea that is created. Optional.
/// </param>
/// <field name="defaultOptions" Type="Object">
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
/// </field>
/// <returns type="jHtmlArea" />
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
/// </param>
/// <param name="options" type="Object">
/// Optional. The custom options you want applied to the jHtmlArea that is created.
/// </param>
/// <returns type="jHtmlArea" />
},
execCommand: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
ec: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
queryCommandValue: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
qc: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
getSelectedHTML: function() {
/// <summary>
/// Returns the HTML that is currently selected within the editor.
/// </summary>
/// <returns type="String" />
},
getSelection: function() {
/// <summary>
/// Returns the Browser Selection object that represents the currently selected region of the editor.
/// </summary>
/// <returns type="Object" />
},
getRange: function() {
/// <summary>
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
/// </summary>
/// <returns type="Object" />
},
pasteHTML: function(html) {
/// <summary>
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
/// </summary>
/// <param name="html" type="String">
/// The HTML text to paste/insert.
/// </param>
},
cut: function() {
/// <summary>
/// Copies the current selection to the clipboard and then deletes it.
/// </summary>
},
copy: function() {
/// <summary>
/// Copies the current selection to the clipboard.
/// </summary>
},
paste: function() {
/// <summary>
/// Overwrites the contents of the clipboard on the current selection.
/// </summary>
},
bold: function() {
/// <summary>
/// Toggles the current selection between bold and nonbold.
/// </summary>
},
italic: function() {
/// <summary>
/// Toggles the current selection between italic and nonitalic.
/// </summary>
},
underline: function() {
/// <summary>
/// Toggles the current selection between underlined and not underlined.
/// </summary>
},
strikeThrough: function() {
/// <summary>
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
/// </summary>
},
image: function(url) {
/// <summary>
/// This command will insert an image (referenced by url) at the insertion point.
/// If no URL is specified, a prompt will be displayed to the user.
/// </summary>
/// <param name="url" type="String">
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
/// </param>
},
removeFormat: function() {
/// <summary>
/// Removes the formatting tags from the current selection.
/// </summary>
},
link: function() {
/// <summary>
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
/// </summary>
},
unlink: function() {
/// <summary>
/// Removes any hyperlink from the current selection.
/// </summary>
},
orderedList: function() {
/// <summary>
/// Converts the text selection into an ordered list.
/// </summary>
},
unorderedList: function() {
/// <summary>
/// Converts the text selection into an unordered list.
/// </summary>
},
superscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
/// </summary>
},
subscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
/// </summary>
},
p: function() {
/// <summary>
/// Sets the current block format tag to <P>.
/// </summary>
},
h1: function() {
/// <summary>
/// Sets the current block format tag to <H1>.
/// </summary>
},
h2: function() {
/// <summary>
/// Sets the current block format tag to <H2>.
/// </summary>
},
h3: function() {
/// <summary>
/// Sets the current block format tag to <H3>.
/// </summary>
},
h4: function() {
/// <summary>
/// Sets the current block format tag to <H4>.
/// </summary>
},
h5: function() {
/// <summary>
/// Sets the current block format tag to <H5>.
/// </summary>
},
h6: function() {
/// <summary>
/// Sets the current block format tag to <H6>.
/// </summary>
},
heading: function(h) {
/// <summary>
/// Sets the current block format tag to <H?> tag.
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
/// </summary>
/// <param name="h" type="Number">
/// The Number of Header (<H?>) tag to format the current block with.
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
/// </param>
},
indent: function() {
/// <summary>
/// Indents the selection or insertion point.
/// </summary>
},
outdent: function() {
/// <summary>
/// Outdents the selection or insertion point.
/// </summary>
},
insertHorizontalRule: function() {
/// <summary>
/// Inserts a horizontal rule at the insertion point (deletes selection).
/// </summary>
},
justifyLeft: function() {
/// <summary>
/// Justifies the selection or insertion point to the left.
/// </summary>
},
justifyCenter: function() {
/// <summary>
/// Centers the selection or insertion point.
/// </summary>
},
justifyRight: function() {
/// <summary>
/// Right-justifies the selection or the insertion point.
/// </summary>
},
increaseFontSize: function() {
/// <summary>
/// Increases the Font Size around the selection or at the insertion point.
/// </summary>
},
decreaseFontSize: function() {
/// <summary>
/// Decreases the Font Size around the selection or at the insertion point.
/// </summary>
},
forecolor: function(c) {
/// <summary>
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
/// </summary>
},
formatBlock: function(v) {
/// <summary>
/// Sets the current block format tag.
/// </summary>
},
showHTMLView: function() {
/// <summary>
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
/// </summary>
},
hideHTMLView: function() {
/// <summary>
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
/// </summary>
},
toggleHTMLView: function() {
/// <summary>
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
/// </summary>
},
toHtmlString: function() {
/// <summary>
/// Returns the HTML text contained within the editor.
/// </summary>
/// <returns type="String" />
},
toString: function() {
/// <summary>
/// Return the Text contained within the editor, with all HTML tags removed.
/// </summary>
/// <returns type="String" />
},
updateTextArea: function() {
/// <summary>
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
/// </summary>
},
updateHtmlArea: function() {
/// <summary>
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
/// </summary>
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
})(jQuery);

File diff suppressed because one or more lines are too long

@@ -0,0 +1,189 @@
/*
* jHtmlAreaColorPickerMenu 0.7.0 - A Color Picker Extension to jHtmlArea
* Part of the jHtmlArea Project
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
if (jHtmlArea) {
var oldForecolor = jHtmlArea.fn.forecolor;
jHtmlArea.fn.forecolor = function(c) {
if (c) {
// If color is specified, then use the "default" method functionality
oldForecolor.call(this, c);
} else {
// If no color is specified, then display color picker ui
var that = this;
var rng = this.getRange();
jHtmlAreaColorPickerMenu($(".forecolor", this.toolbar), {
colorChosen: function(color) {
if ($.browser.msie) {
rng.execCommand("ForeColor", false, color);
} else {
that.forecolor(color);
}
}
});
}
};
}
var menu = window.jHtmlAreaColorPickerMenu = function(ownerElement, options) {
return new jHtmlAreaColorPickerMenu.fn.init(ownerElement, options);
};
menu.fn = menu.prototype = {
jhtmlareacolorpickermenu: "0.7.0",
init: function(ownerElement, options) {
var opts = $.extend({}, menu.defaultOptions, options);
var that = this;
var owner = this.owner = $(ownerElement);
var position = owner.position();
if (menu.instance) {
menu.instance.hide();
}
jHtmlAreaColorPickerMenu.instance = this;
var picker = this.picker = $("<div/>").css({
position: "absolute",
left: position.left + opts.offsetLeft,
top: position.top + owner.height() + opts.offsetTop,
"z-index": opts["z-index"]
}).addClass("jHtmlAreaColorPickerMenu");
for (var i = 0; i < opts.colors.length; i++) {
var c = opts.colors[i];
$("<div/>").css("background-color", c).appendTo(picker).click(
(function(color) {
return function() {
if (opts.colorChosen) {
opts.colorChosen.call(this, color);
}
that.hide();
};
})(c)
);
}
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(
function() {
if (opts.colorChosen) {
opts.colorChosen.call(this, null);
}
that.hide();
}
);
var autoHide = false;
picker.appendTo(owner.parent()).
show().
mouseout(function() {
autoHide = true;
that.currentTimeout = window.setTimeout(function() { if (autoHide === true) { that.hide(); } }, 1000);
}).
mouseover(function() {
if (that.currentTimeout) {
window.clearTimeout(that.currentTimeout);
that.currentTimeout = null;
}
autoHide = false;
});
},
hide: function() {
this.picker.hide();
this.picker.remove();
}
};
menu.fn.init.prototype = menu.fn;
menu.defaultOptions = {
"z-index": 0,
offsetTop: 0,
offsetLeft: 0,
colors: [
"#ffffff",
"#cccccc",
"#c0c0c0",
"#999999",
"#666666",
"#333333",
"#000000",
"#ffcccc",
"#ff6666",
"#ff0000",
"#cc0000",
"#990000",
"#660000",
"#330000",
"#ffcc99",
"#ff9966",
"#ff9900",
"#ff6600",
"#cc6600",
"#993300",
"#663300",
"#ffff99",
"#ffff66",
"#ffcc66",
"#ffcc33",
"#cc9933",
"#996633",
"#663333",
"#ffffcc",
"#ffff33",
"#ffff00",
"#ffcc00",
"#999900",
"#666600",
"#333300",
"#99ff99",
"#66ff99",
"#33ff33",
"#33cc00",
"#009900",
"#006600",
"#003300",
"#99FFFF",
"#33FFFF",
"#66CCCC",
"#00CCCC",
"#339999",
"#336666",
"#003333",
"#CCFFFF",
"#66FFFF",
"#33CCFF",
"#3366FF",
"#3333FF",
"#000099",
"#000066",
"#CCCCFF",
"#9999FF",
"#6666CC",
"#6633FF",
"#6600CC",
"#333399",
"#330099",
"#FFCCFF",
"#FF99FF",
"#CC66CC",
"#CC33CC",
"#993399",
"#663366",
"#330033"
],
colorChosen: null
};
})(jQuery);

@@ -0,0 +1,8 @@
// jHtmlArea - http://jhtmlarea.codeplex.com - (c)2009 Chris Pietschmann
(function($){if(jHtmlArea){var oldForecolor=jHtmlArea.fn.forecolor;jHtmlArea.fn.forecolor=function(c){if(c){oldForecolor.call(this,c);}else{var that=this;var rng=this.getRange();jHtmlAreaColorPickerMenu($(".forecolor",this.toolbar),{colorChosen:function(color){if($.browser.msie){rng.execCommand("ForeColor",false,color);}else{that.forecolor(color);}}});}};}
var menu=window.jHtmlAreaColorPickerMenu=function(ownerElement,options){return new jHtmlAreaColorPickerMenu.fn.init(ownerElement,options);};menu.fn=menu.prototype={jhtmlareacolorpickermenu:"0.7.0",init:function(ownerElement,options){var opts=$.extend({},menu.defaultOptions,options);var that=this;var owner=this.owner=$(ownerElement);var position=owner.position();if(menu.instance){menu.instance.hide();}
jHtmlAreaColorPickerMenu.instance=this;var picker=this.picker=$("<div/>").css({position:"absolute",left:position.left+opts.offsetLeft,top:position.top+owner.height()+opts.offsetTop,"z-index":opts["z-index"]}).addClass("jHtmlAreaColorPickerMenu");for(var i=0;i<opts.colors.length;i++){var c=opts.colors[i];$("<div/>").css("background-color",c).appendTo(picker).click((function(color){return function(){if(opts.colorChosen){opts.colorChosen.call(this,color);}
that.hide();};})(c));}
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(function(){if(opts.colorChosen){opts.colorChosen.call(this,null);}
that.hide();});var autoHide=false;picker.appendTo(owner.parent()).show().mouseout(function(){autoHide=true;that.currentTimeout=window.setTimeout(function(){if(autoHide===true){that.hide();}},1000);}).mouseover(function(){if(that.currentTimeout){window.clearTimeout(that.currentTimeout);that.currentTimeout=null;}
autoHide=false;});},hide:function(){this.picker.hide();this.picker.remove();}};menu.fn.init.prototype=menu.fn;menu.defaultOptions={"z-index":0,offsetTop:0,offsetLeft:0,colors:["#ffffff","#cccccc","#c0c0c0","#999999","#666666","#333333","#000000","#ffcccc","#ff6666","#ff0000","#cc0000","#990000","#660000","#330000","#ffcc99","#ff9966","#ff9900","#ff6600","#cc6600","#993300","#663300","#ffff99","#ffff66","#ffcc66","#ffcc33","#cc9933","#996633","#663333","#ffffcc","#ffff33","#ffff00","#ffcc00","#999900","#666600","#333300","#99ff99","#66ff99","#33ff33","#33cc00","#009900","#006600","#003300","#99FFFF","#33FFFF","#66CCCC","#00CCCC","#339999","#336666","#003333","#CCFFFF","#66FFFF","#33CCFF","#3366FF","#3333FF","#000099","#000066","#CCCCFF","#9999FF","#6666CC","#6633FF","#6600CC","#333399","#330099","#FFCCFF","#FF99FF","#CC66CC","#CC33CC","#993399","#663366","#330033"],colorChosen:null};})(jQuery);

File diff suppressed because it is too large Load Diff

4410
data/jhtmlarea/scripts/jquery-1.3.2.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@@ -0,0 +1,6 @@
div.jHtmlAreaColorPickerMenu {border: solid 1px #bbb; background-color: #ddd; width: 112px;}
div.jHtmlAreaColorPickerMenu div {float: left; margin: 2px; width: 12px; height: 14px;}
div.jHtmlAreaColorPickerMenu div:hover {margin: 0px; border: dotted 2px black;}
div.jHtmlAreaColorPickerMenu div.automatic { width: 104px; height: auto; padding: 2px;}
div.jHtmlAreaColorPickerMenu div.automatic div { margin: 2px; width: 12px; height: 14px; border: solid 1px black;}

@@ -0,0 +1,6 @@
body
{
background: #000;
color: #fff;
margin: 2px;
}

@@ -0,0 +1,48 @@
div.jHtmlArea { display: inline block; }
div.jHtmlArea div { padding: 0px; margin: 0px; }
div.jHtmlArea .ToolBar { }
div.jHtmlArea .ToolBar ul { border: solid 1px #ccc; margin: 1px; padding: 1px; float: left; background: #fff url(jHtmlArea_Toolbar_Group_BG.png) repeat-x;}
div.jHtmlArea .ToolBar ul li { list-style-type: none; float: left; border: none; padding: 1px; margin: 1px; }
div.jHtmlArea .ToolBar ul li:hover { border: solid 1px #ccc; background: #ddd url(jHtmlArea_Toolbar_Group__Btn_Select_BG.png); padding: 0; }
div.jHtmlArea .ToolBar ul li a { display: block; width: 16px; height: 16px; background: url(jHtmlArea.png) no-repeat -16px -500px; border: none; cursor: pointer; padding: 0px; }
div.jHtmlArea .ToolBar ul li a.highlighted { border: solid 1px #aaa; background-color: #bbb; padding: 0; }
div.jHtmlArea .ToolBar ul li.separator {height: 16px; margin: 0 2px 0 3px; border-left: 1px solid #ccc;}
div.jHtmlArea .ToolBar ul li.separator:hover { padding: 1px; background-color: #fff; border-top:none; border-bottom:none; border-right:none;}
div.jHtmlArea .ToolBar ul li a:hover { }
div.jHtmlArea .ToolBar ul li a.bold { background-position: 0 0; }
div.jHtmlArea .ToolBar ul li a.italic { background-position: -16px 0; }
div.jHtmlArea .ToolBar ul li a.underline { background-position: -32px 0; }
div.jHtmlArea .ToolBar ul li a.strikethrough { background-position: -48px 0; }
div.jHtmlArea .ToolBar ul li a.link { background-position: -64px 0; }
div.jHtmlArea .ToolBar ul li a.unlink { background-position: -80px 0; }
div.jHtmlArea .ToolBar ul li a.orderedlist { background-position: -96px 0; }
div.jHtmlArea .ToolBar ul li a.unorderedlist { background-position: -112px 0; }
div.jHtmlArea .ToolBar ul li a.image { background-position: -128px 0; }
div.jHtmlArea .ToolBar ul li a.cut { background-position: -144px 0; }
div.jHtmlArea .ToolBar ul li a.copy { background-position: -160px 0; }
div.jHtmlArea .ToolBar ul li a.paste { background-position: -176px 0; }
div.jHtmlArea .ToolBar ul li a.html { background-position: -192px 0; opacity:0.6; filter:alpha(opacity=60);}
div.jHtmlArea .ToolBar ul li a.html.highlighted { opacity:1.0; filter:alpha(opacity=100);}
div.jHtmlArea .ToolBar ul li a.h1 { background-position: 0 -16px;}
div.jHtmlArea .ToolBar ul li a.h2 { background-position: -16px -16px;}
div.jHtmlArea .ToolBar ul li a.h3 { background-position: -32px -16px;}
div.jHtmlArea .ToolBar ul li a.h4 { background-position: -48px -16px;}
div.jHtmlArea .ToolBar ul li a.h5 { background-position: -64px -16px;}
div.jHtmlArea .ToolBar ul li a.h6 { background-position: -80px -16px;}
div.jHtmlArea .ToolBar ul li a.subscript { background-position: -96px -16px;}
div.jHtmlArea .ToolBar ul li a.superscript { background-position: -112px -16px;}
div.jHtmlArea .ToolBar ul li a.indent { background-position: -128px -16px;}
div.jHtmlArea .ToolBar ul li a.outdent { background-position: -144px -16px;}
div.jHtmlArea .ToolBar ul li a.horizontalrule { background-position: -160px -16px;}
div.jHtmlArea .ToolBar ul li a.p { background-position: -176px -16px;}
div.jHtmlArea .ToolBar ul li a.justifyleft { background-position: 0 -32px;}
div.jHtmlArea .ToolBar ul li a.justifycenter { background-position: -16px -32px;}
div.jHtmlArea .ToolBar ul li a.justifyright { background-position: -32px -32px;}
div.jHtmlArea .ToolBar ul li a.increasefontsize { background-position: -48px -32px;}
div.jHtmlArea .ToolBar ul li a.decreasefontsize { background-position: -64px -32px;}
div.jHtmlArea .ToolBar ul li a.forecolor { background-position: -80px -32px;}

Binary file not shown.

After

(image error) Size: 8.2 KiB

Binary file not shown.

After

(image error) Size: 964 B

Binary file not shown.

After

(image error) Size: 942 B

Binary file not shown.

After

(image error) Size: 260 B

Binary file not shown.

After

(image error) Size: 251 B

Binary file not shown.

After

(image error) Size: 178 B

Binary file not shown.

After

(image error) Size: 104 B

Binary file not shown.

After

(image error) Size: 125 B

Binary file not shown.

After

(image error) Size: 105 B

Binary file not shown.

After

(image error) Size: 3.7 KiB

Binary file not shown.

After

(image error) Size: 90 B

Binary file not shown.

After

(image error) Size: 129 B

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB

@@ -0,0 +1,406 @@
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; }
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; }
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: .2em; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { padding: .2em; zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }

@@ -474,9 +474,6 @@
<code>TORON</code>
<code>TORNO</code>
<code>TR</code>
<temple name="Trujillo, Peru">
<code>TRUJI</code>
</temple>
</temple>
<temple name="Tuxtla Gutierrez, Mexico">
<code>TGUTI</code>

@@ -41,16 +41,16 @@ master_doc = 'index'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.1'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.1.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'cs'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.0'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -13,8 +13,8 @@ gramps(1) @VERSION@ gramps(1)
**SYNOPSIS**
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *DATABASE*
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**--remove=** *FAMILY_TREE_PATTERN*]
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
[**-e** | **--export=** *FILE* [**-f** | **--format=** *FORMAT*]]
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *OPTION
STRING*]] [*FILE*] [**--version**]
@@ -50,23 +50,23 @@ gramps(1) @VERSION@ gramps(1)
Formats available for export are **gramps-xml** (guessed if *FILE*
ends with **.gramps** ), **gedcom** (guessed if *FILE* ends with
**.ged** ), or any file export available through the Gramps plugin
**.ged** ), or any file export available through the Gramps plugin
system.
Formats available for import are **gramps-xml** , **gedcom** ,
**gramps-pkg** (guessed if *FILE* ends with **.gpkg** ),
and **geneweb** (guessed if *FILE* ends with **.gw** ).
Formats available for export are **gramps-xml** , **gedcom** ,
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
Formats available for export are **gramps-xml** , **gedcom** ,
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
**geneweb**.
**-l**
**-l**
Print a list of known family trees.
**-L**
**-L**
Print a detailed list of known family trees.
@@ -82,22 +82,22 @@ gramps(1) @VERSION@ gramps(1)
**-i** , **--import=** *FILE*
Import data from *FILE* . If you haven't specified a database, then
an empty database is created for you called Family Tree x
(where x is an incrementing number).
Import data from *FILE* . If you haven't specified a database then
a temporary database is used; this is deleted when you exit
gramps.
When more than one input file is given, each has to be preceded
by **-i** flag. The files are imported in the specified order, i.e.
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
might produce different gramps IDs in the resulting database.
**-e** , **--export=** *FILE*
Export data into *FILE* . For **gramps-xml** , **gedcom**
, **wft** , **gramps-pkg** , and **geneweb** , the *FILE* is the
**-e** , **--export=** *FICHIER*
Export data into *FILE* . For **gramps-xml** , **gedcom**
, **wft** , **gramps-pkg** , et **geneweb** , the *FILE* is the
name of the resulting file.
When more than one output file is given, each has to be preceded
When more than one output file is given, each has to be preceded
by **-e** flag. The files are written one by one, in the specified order.
@@ -165,7 +165,7 @@ gramps(1) @VERSION@ gramps(1)
With or without the **-O** flag, there could be multiple imports, exports,
and actions specified further on the command line by using **-i** ,
and actions specified further on the command line by using **-i** ,
**-e** , and **-a** flags.
@@ -194,46 +194,46 @@ gramps(1) @VERSION@ gramps(1)
**EXAMPLES**
To open an existing family tree and import an xml file into it, one
may type:
**gramps -O** *'My Family Tree'* **-i** *~/db3.gramps*
The above changes the opened family tree, to do the same, but import
both in a temporary family tree and start an interactive session, one
may type:
**gramps -i** *'My Family Tree'* **-i** *~/db3.gramps*
To import four databases (whose formats can be determined from their
names) and then check the resulting database for errors, one may type:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**-i** *file4.wft* **-a** *check*
To explicitly specify the formats in the above example, append file
names with appropriate **-f** options:
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
**-f** *wft* **-a** *check*
To record the database resulting from all imports, supply **-e** flag (use
**-f** if the filename does not allow gramps to guess the format):
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
**-f** *gramps-pkg*
To import three databases and start interactive gramps session with the
result:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
To run the Verify tool from the commandline and output the result to
stdout:
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
Finally, to start normal interactive session type:
**gramps**
@@ -257,20 +257,20 @@ gramps(1) @VERSION@ gramps(1)
modification of the main program.
In addition to generating direct printer output, report generators also
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
or *LaTeX* to allow the users to modify the format to suit their needs.
**KNOWN BUGS AND LIMITATIONS**
**FILES**
*${PREFIX}/bin/gramps*
*${PREFIX}/lib/python3/dist-packages/gramps/*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*
@@ -290,8 +290,8 @@ gramps(1) @VERSION@ gramps(1)
The user documentation is available through standard web browser
in the form of Gramps Manual.
The developer documentation can be found on the
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
The developer documentation can be found on the
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
portal.

@@ -41,16 +41,16 @@ master_doc = 'fr'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.1'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = 'trunk'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -13,10 +13,11 @@ gramps(1) @VERSION@ gramps(1)
**SYNOPSIS**
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*]
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FICHIER*]
[**-e** | **--export=** *FICHIER*] [**--remove=** *FAMILY_TREE_PATTERN*]
[**-a** | **--action=** *ACTION* [*-p* | **--options=** *CHAÎNE
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
[**-e** | **--export=** *FICHIER* [**-f** | **--format=** *FORMAT*]]
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *CHAÎNE
OPTION*]] [*FICHIER*] [**--version**]
@@ -60,7 +61,7 @@ gramps(1) @VERSION@ gramps(1)
**geneweb** .
**-l**
**-l**
Imprime une liste des arbres familiaux disponibles.
@@ -81,8 +82,8 @@ gramps(1) @VERSION@ gramps(1)
**-i** , **--import=** *FICHIER*
Importer des données depuis un *FICHIER* . Si vous n'avez pas
spécifié de base de données, alors une base de données vide
est utilisée.
spécifié de base de données alors une base de données temporaire
est utilisée; elle sera effacée quand vous quitterez gramps.
Quand plus d'un fichier doit être importé, chacun doit être
précédé par la commande **-i** . Ces fichiers sont importés dans le
@@ -91,11 +92,11 @@ gramps(1) @VERSION@ gramps(1)
**-e** , **--export=** *FICHIER*
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
*FICHIER* est le nom du fichier de sortie.
Quand plus d'un fichier doit être exporté, chacun doit être
Quand plus d'un fichier doit être exporté, chacun doit être
précédé par la commande **-e** . Ces fichiers sont importés dans le
même ordre.
@@ -120,7 +121,7 @@ gramps(1) @VERSION@ gramps(1)
**name=name**
Cette option est obligatoire, elle détermine quel rapport ou
outil sera utilisé. Si le name saisi ne correspond à aucun
outil sera utilisé. Si le name saisi ne correspond à aucun
module disponible, un message d'erreur sera ajouté.
**show=all**
@@ -183,54 +184,54 @@ gramps(1) @VERSION@ gramps(1)
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
mémorisées en *stdout* (si elles sont le fait de la manipulation par
gramps) ou en *stderr* (si elles ne sont pas le fait d'une manipulation).
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
les messages et les erreurs dans les fichiers.
**EXEMPLES**
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
saisir:
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir :
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Lecture de quatre bases de données dont les formats peuvent être
devinés d'après les noms, puis vérification des données:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**-i** *file4.wft* **-a** *check*
Si vous voulez préciser lesformats de fichiers dans l'exemple ci-
dessus, complétez les noms de fichiers par les options -f appropriées:
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
**-f** *wft* **-a** *check*
Pour enregistrer le résultat des lectures, donnez l'option **-e**
Pour enregistrer le résultat des lectures, donnez l'option **-e**
(utiliser -f si le nom de fichier ne permet pas à gramps de deviner le
format):
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
**-f** *gramps-pkg*
Pour lire trois ensembles de données puis lancer une session
Pour lire trois ensembles de données puis lancer une session
interactive de gramps sur le tout :
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
Pour lancer l'outil de vérification de la base de données depuis la
ligne de commande et obtenir le résultat :
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
Enfin, pour lancer une session interactive normale, entrer :
Enfin, pour lancer une session interactive normale, entrer :
**gramps**
@@ -264,11 +265,11 @@ gramps(1) @VERSION@ gramps(1)
**FICHIERS**
*${PREFIX}/bin/gramps*
*${PREFIX}/lib/python3/dist-packages/gramps/*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*

@@ -1,8 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH FRENCH "" "" ""
.TH "GRAMPS" "1" "28 December 2012" "4.0" "Gramps"
.SH NAME
French \-
gramps \- Gramps Documentation
.
.nr rst2man-indent-level 0
.
@@ -30,6 +28,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.\" Man page generated from reStructuredText.
.
.sp
gramps(1) @VERSION@ gramps(1)
.INDENT 0.0
@@ -42,10 +42,11 @@ données généalogiques)
.TP
.B \fBSYNOPSIS\fP
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP]
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFICHIER\fP]
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fI...\fP]
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE
OPTION\fP]] [\fIFICHIER\fP] [\fB\-\-version\fP]
.TP
.B \fBDESCRIPTION\fP
@@ -75,16 +76,16 @@ Le format spécifique du \fIFICHIER\fP est précédé par les arguments
alors le format sera celui de l\(aqextension ou du type\-MIME.
.sp
Les formats de sortie disponibles sont \fBgramps\-xml\fP (deviné si
\fIFICHIER\fP se termine par \fB\&.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
termine par \fB\&.ged\fP ), ou tout autre fichier d\(aqexportation
\fIFICHIER\fP se termine par \fB.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
termine par \fB.ged\fP ), ou tout autre fichier d\(aqexportation
disponible dans le système de plugin Gramps.
.sp
Les formats disponibles pour l\(aqimportation sont \fBgrdb\fP ,
\fBgramps\-xml\fP , \fBgedcom\fP , \fBgramps\-pkg\fP (deviné si \fIFICHIER\fP se termine par
\fB\&.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB\&.gw\fP ).
\fB.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB.gw\fP ).
.sp
Les formats disponibles pour l\(aqexportation sont \fBgramps\-xml\fP , \fBged
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB\&.wft\fP ),
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB.wft\fP ),
\fBgeneweb\fP .
.TP
.B \fB\-l\fP
@@ -105,8 +106,8 @@ sources, vous devez utiliser l\(aqoption d\(aqimport.
.TP
.B \fB\-i\fP , \fB\-\-import=\fP \fIFICHIER\fP
Importer des données depuis un \fIFICHIER\fP . Si vous n\(aqavez pas
spécifié de base de données, alors une base de données vide
est utilisée.
spécifié de base de données alors une base de données temporaire
est utilisée; elle sera effacée quand vous quitterez gramps.
.sp
Quand plus d\(aqun fichier doit être importé, chacun doit être
précédé par la commande \fB\-i\fP . Ces fichiers sont importés dans le
@@ -192,7 +193,7 @@ fenêtre et demarrera avec une base vide, puisqu\(aqil n\(aqy a pas données.
.sp
Si aucune option \fB\-e\fP ou \fB\-a\fP n\(aqest donnée, gramps lancera sa propre
fenêtre et démarrera avec la base de données issue de tout les imports.
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP\&.
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP.
.sp
Les erreurs rencontrées lors d\(aqimportation, d\(aqexportation, ou d\(aqaction, seront
mémorisées en \fIstdout\fP (si elles sont le fait de la manipulation par
@@ -301,7 +302,7 @@ besoins
.INDENT 3.5
\fI${PREFIX}/bin/gramps\fP
.sp
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
.sp
\fI${PREFIX}/share/\fP
.sp
@@ -311,15 +312,15 @@ besoins
.INDENT 0.0
.TP
.B \fBAUTEURS\fP
Donald Allingham <\fI\%don@gramps\-project.org\fP>
\fI\%http://gramps\-project.org/\fP
Donald Allingham <\fI\%don@gramps-project.org\fP>
\fI\%http://gramps-project.org/\fP
.sp
Cette page man a d\(aqabord été écrite par :
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
pour Debian GNU/Linux système.
.sp
Cette page man est maintenue par :
Gramps project <\fI\%xxx@gramps\-project.org\fP>
Gramps project <\fI\%xxx@gramps-project.org\fP>
.sp
La traduction française :
Jérôme Rapinat <\fI\%romjerome@yahoo.fr\fP>
@@ -329,9 +330,13 @@ La documentation\-utilisateur est disponible par un navigateur
standard sous la forme du manuel Gramps.
.sp
La documentation pour développeur est disponible sur le site
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP .
\fI\%http://www.gramps-project.org/wiki/index.php?title=Portal:Developers\fP .
.UNINDENT
.sp
gramps(1) @VERSION@ gramps(1)
.SH AUTHOR
Jerome Rapinat
.SH COPYRIGHT
2012, Gramps project
.\" Generated by docutils manpage writer.
.

@@ -1,335 +1,332 @@
.\" Man page generated from reStructuredText.
.
.TH ENGLISH "" "" ""
.TH gramps 1 "@VERSION@" "December 2012" "@VERSION@"
.SH NAME
English \-
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
gramps \- Genealogical Research and Analysis Management Programming System.
.SH SYNOPSIS
.B gramps
.RB [ \-?|\-\^\-help ]
.RB [ \-\^\-usage ]
.RB [ \-\^\-version ]
.RB [ \-l ]
.RB [ \-u|\-\^\-force-unlock ]
.RB [ \-O|\-\^\-open=
.IR DATABASE
.RB [ \-f|\-\^\-format=
.IR FORMAT ]]
.RB [ \-i|\-\^\-import=
.IR FILE
.RB [ \-f|\-\^\-format=
.IR FORMAT ]]
.RB [ \-i|\-\^\-import=
.IR ... ]
.RB [ \-e|\-\^\-export=
.IR FILE
.RB [ \-f|\-\^\-format=
.IR FORMAT ]]
.RB [ \-a|\-\^\-action=
.IR ACTION ]
.RB [ \-p|\-\^\-options=
.IR OPTIONSTRING ]]
.RB [
.IR FILE
.RB ]
.if 0 .RB [ bonobo\ options ]
.if 0 .RB [ sound\ options ]
.RB [ \-\-version ]
.SH DESCRIPTION
.PP
\fIGramps\fP is a Free/OpenSource genealogy program. It is written in Python,
using the GTK+/GNOME interface.
Gramps should seem familiar to anyone who has used other genealogy programs
before such as \fIFamily Tree Maker (TM)\fR, \fIPersonal Ancestral
Files (TM)\fR, or the GNU Geneweb.
It supports importing of the ever popular GEDCOM format which is used world
wide by almost all other genealogy software.
.SH OPTIONS
.TP
.BI gramps " FILE"
When \fIFILE\fR is given (without any flags) as a family tree name or as
a family tree database directory, then it is opened and an interactive
session is started. If FILE is a file format understood by Gramps, an empty
family tree is created whose name is based on the \fIFILE\fP name
and the data is imported into it. The rest of the
options is ignored. This way of launching is suitable for using gramps
as a handler for genealogical data in e.g. web browsers. This invocation
can accept any data format native to gramps, see below.
.br
.TP
.BI \-f,\-\^\-format= " FORMAT"
Explicitly specify format of \fIFILE\fR given by preceding
.ig
\fB\-O\fR,
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
\fB\-i\fR, or
\fB\-e\fR option. If the \fB\-f\fR option is not given for any \fIFILE\fR,
the format of that file is guessed according to its extension or MIME-type.
.br
Formats
available for export are \fBgramps\-xml\fR (guessed if \fIFILE\fR ends with
\fB.gramps\fR), \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR), or
any file export available through the Gramps plugin system.
.br
Formats
available for import are \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
\fBgramps\-pkg\fR (guessed if \fIFILE\fR ends with \fB.gpkg\fR), and
\fBgeneweb\fR (guessed if \fIFILE\fR ends with \fB.gw\fR).
.br
Formats available for export are
.ig
\fBgrdb\fR,
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
gramps(1) @VERSION@ gramps(1)
.INDENT 0.0
.TP
.B \fBNAME\fP
gramps \- Genealogical Research and Analysis Management Programming Sys
tem.
.TP
.B \fBSYNOPSIS\fP
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIDATABASE\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
[\fB\-e\fP | \fB\-\-export=\fP \fIFILE\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fIOPTION
STRING\fP]] [\fIFILE\fP] [\fB\-\-version\fP]
.TP
.B \fBDESCRIPTION\fP
Gramps is a Free/OpenSource genealogy program. It is written in Python,
using the GTK+/GNOME interface. Gramps should seem familiar to anyone
who has used other genealogy programs before such as Family Tree Maker
(TM), Personal Ancestral Files (TM), or the GNU Geneweb. It supports
importing of the ever popular GEDCOM format which is used world wide by
almost all other genealogy software.
.TP
.B \fBOPTIONS\fP
.INDENT 7.0
.TP
.B \fBgramps\fP \fIFILE\fP
When \fIFILE\fP is given (without any flags) as a family tree name or
as a family tree database directory, then it is opened and an
interactive session is started. If \fIFILE\fP is a file format under
stood by Gramps, an empty family tree is created whose name is
based on the \fIFILE\fP name and the data is imported into it. The
rest of the options is ignored. This way of launching is suit
able for using gramps as a handler for genealogical data in e.g.
web browsers. This invocation can accept any data format native
to gramps, see below.
.TP
.B \fB\-f\fP , \fB\-\-format=\fP \fIFORMAT\fP
Explicitly specify format of \fIFILE\fP given by preceding \fB\-i\fP ,
or \fB\-e\fP option. If the \fB\-f\fP option is not given for any
\fIFILE\fP , the format of that file is guessed according to its extension
or MIME\-type.
.sp
Formats available for export are \fBgramps\-xml\fP (guessed if \fIFILE\fP
ends with \fB\&.gramps\fP ), \fBgedcom\fP (guessed if \fIFILE\fP ends with
\fB\&.ged\fP ), or any file export available through the Gramps plugin
system.
.sp
Formats available for import are \fBgramps\-xml\fP , \fBgedcom\fP ,
\fBgramps\-pkg\fP (guessed if \fIFILE\fP ends with \fB\&.gpkg\fP ),
and \fBgeneweb\fP (guessed if \fIFILE\fP ends with \fB\&.gw\fP ).
.sp
Formats available for export are \fBgramps\-xml\fP , \fBgedcom\fP ,
\fBgramps\-pkg\fP , \fBwft\fP (guessed if \fIFILE\fP ends with \fB\&.wft\fP ),
\fBgeneweb\fP\&.
.TP
.B \fB\-l\fP
\fBgramps\-xml\fR, \fBgedcom\fR,
\fBgramps\-pkg\fR, \fBwft\fR (guessed if \fIFILE\fR ends with \fB.wft\fR),
\fBgeneweb\fR, and \fBiso\fR (never guessed, always specify with
\fB\-f\fR option).
.TP
.BI \-l
Print a list of known family trees.
.TP
.B \fB\-L\fP
Print a detailed list of known family trees.
.TP
.B \fB\-u\fP , \fB\-\-force\-unlock\fP
.BI \-u,\-\^\-force-unlock
Unlock a locked database.
.TP
.BI \-O,\-\^\-open= " DATABASE"
Open \fIDATABASE\fR which must be an existing database directory or existing family tree name.
If no action, import or export options are given on the command line then an interactive session is started using that database.
.TP
.BI \-i,\-\^\-import= " FILE"
Import data from \fIFILE\fR. If you haven't specified a database then a temporary database is used; this is deleted when you exit gramps.
.br
When more than one input file is given, each has to be preceded by \fB\-i\fR
flag. The files are imported in the specified order,
i.e. \fB\-i\fR \fIFILE1\fR \fB\-i\fR \fIFILE2\fR
and \fB\-i\fR \fIFILE2\fR \fB\-i\fR \fIFILE1\fR might produce different
gramps IDs in the resulting database.
.TP
.BI \-e,\-\^\-export= " FILE"
Export data into \fIFILE\fR. For \fBgramps\-xml\fR, \fBgedcom\fR,
\fBwft\fR, \fBgramps\-pkg\fR, and \fBgeneweb\fR, the \fIFILE\fR is
the name of the resulting file.
.br
When more than one output file is given, each has to be preceded
by \fB\-e\fR flag. The files are written one by one, in the specified order.
.TP
.BI \-a,\-\^\-action= " ACTION"
Perform \fIACTION\fR on the imported data. This is done after all imports
are successfully completed. Currently available actions are
\fBsummary\fR (same as Reports->View->Summary),
\fBcheck\fR (same as Tools->Database Processing->Check and Repair),
\fBreport\fR (generates report), and
\fBtool\fR (runs a plugin tool).
Both \fBreport\fR and \fBtool\fR need the \fIOPTIONSTRING\fR supplied by the
\fB\-p\fR flag).
.br
The \fIOPTIONSTRING\fR should satisfy the following conditions:
.br
It must not contain any spaces.
If some arguments need to include spaces, the string should
be enclosed with quotation marks, i.e., follow the shell syntax.
Option string is a list of pairs with name and value (separated by the
equality sign). The name and value pairs must be separated by commas.
.br
Most of the report or tools options are specific for each report or tool.
However, there are some common options.
.BI "name=name"
.br
This mandatory option determines which report or tool will be run.
If the supplied \fIname\fR does not correspond to any available report or
tool, an error message will be printed followed by the list of
available reports or tools (depending on the \fIACTION\fR).
.BI "show=all"
.br
This will produce the list of names for all options available for a given
report or tool.
.BI "show="optionname
.br
This will print the description of
the functionality supplied by \fIoptionname\fR, as well as what are the
acceptable types and values for this option.
.br
Use the above options to find out
everything about a given report.
.LP
When more than one output action is given, each has to be preceded
by \fB\-a\fR flag. The actions are performed one by one, in the specified order.
.TP
.BI \-d,\-\^\-debug= " LOGGER_NAME"
Enables debug logs for development and testing. Look at the source code for details
.TP
.B \fB\-O\fP , \fB\-\-open=\fP \fIDATABASE\fP
Open \fIDATABASE\fP which must be an existing database directory or
existing family tree name. If no action, import or export
options are given on the command line then an interactive ses
sion is started using that database.
.TP
.B \fB\-i\fP , \fB\-\-import=\fP \fIFILE\fP
Import data from \fIFILE\fP . If you haven\(aqt specified a database, then
an empty database is created for you called Family Tree x
(where x is an incrementing number).
.sp
When more than one input file is given, each has to be preceded
by \fB\-i\fP flag. The files are imported in the specified order, i.e.
\fB\-i\fP \fIFILE1\fP \fB\-i\fP \fIFILE2\fP and \fB\-i\fP \fIFILE2\fP \fB\-i\fP \fIFILE1\fP
might produce different gramps IDs in the resulting database.
.TP
.B \fB\-e\fP , \fB\-\-export=\fP \fIFILE\fP
Export data into \fIFILE\fP . For \fBgramps\-xml\fP , \fBgedcom\fP
, \fBwft\fP , \fBgramps\-pkg\fP , and \fBgeneweb\fP , the \fIFILE\fP is the
name of the resulting file.
.sp
When more than one output file is given, each has to be preceded
by \fB\-e\fP flag. The files are written one by one, in the specified order.
.TP
.B \fB\-a\fP , \fB\-\-action=\fP \fIACTION\fP
Perform \fIACTION\fP on the imported data. This is done after all
imports are successfully completed. Currently available actions
are \fBsummary\fP (same as Reports\->View\->Summary), \fBcheck\fP (same as
Tools\->Database Processing\->Check and Repair), \fBreport\fP (generates
report), and tool (runs a plugin tool). Both \fBreport\fP and \fBtool\fP
need the \fIOPTIONSTRING\fP supplied by the \fB\-p\fP flag).
.sp
The \fIOPTIONSTRING\fP should satisfy the following conditions:
It must not contain any spaces. If some arguments need to
include spaces, the string should be enclosed with quotation
marks, i.e., follow the shell syntax. Option string is a list
of pairs with name and value (separated by the equality sign).
The name and value pairs must be separated by commas.
.sp
Most of the report or tools options are specific for each report
or tool. However, there are some common options.
.sp
\fBname=name\fP
This mandatory option determines which report or tool will be
run. If the supplied name does not correspond to any available
report or tool, an error message will be printed followed by the
list of available reports or tools (depending on the \fIACTION\fP ).
.sp
\fBshow=all\fP
This will produce the list of names for all options available
for a given report or tool.
.sp
\fBshow=optionname\fP
This will print the description of the functionality supplied by
\fIoptionname\fP, as well as what are the acceptable types and values
for this option.
.sp
Use the above options to find out everything about a given
report.
.UNINDENT
.sp
When more than one output action is given, each has to be preceded by
\fB\-a\fP flag. The actions are performed one by one, in the specified order.
.INDENT 7.0
.TP
.B \fB\-d\fP , \fB\-\-debug=\fP \fILOGGER_NAME\fP
Enables debug logs for development and testing. Look at the
source code for details
.TP
.B \fB\-\-version\fP
.BI \-\^\-version
Prints the version number of gramps and then exits
.UNINDENT
\" change 0 to 1 to enable output of OAF options
.if 0 \{
.PP
The following options are used for Bonobo activation.
.TP
.BI \-\^\-oaf-ior-fd= "FD"
File descriptor to print the OAF IOR on
.TP
.BI \-\^\-oaf-activate-iid= " IID"
OAF IID to activate
.TP
.BI \-\^\-oaf-private
Prevent registering of server with OAF
\}
\" change 0 to 1 to enable output of Gnome sound options
.if 0 \{
.PP
The following options are used for controlling sound using the Gnome Library.
.TP
.B \fBOperation\fP
If the first argument on the command line does not start with dash
(i.e. no flag), gramps will attempt to open the file with the name
given by the first argument and start interactive session, ignoring the
rest of the command line arguments.
.sp
If the \fB\-O\fP flag is given, then gramps will try opening the supplied
database and then work with that data, as instructed by the further
command line parameters.
.sp
With or without the \fB\-O\fP flag, there could be multiple imports, exports,
and actions specified further on the command line by using \fB\-i\fP ,
\fB\-e\fP , and \fB\-a\fP flags.
.sp
The order of \fB\-i\fP , \fB\-e\fP , or \fB\-a\fP options does not matter. The actual order
always is: all imports (if any) \-> all actions (if any) \-> all exports
(if any). But opening must always be first!
.sp
If no \fB\-O\fP or \fB\-i\fP option is given, gramps will launch its main window and
start the usual interactive session with the empty database, since
there is no data to process, anyway.
.sp
If no \fB\-e\fP or \fB\-a\fP options are given, gramps will launch its main window
and start the usual interactive session with the database resulted from
all imports. This database resides in the \fBimport_db.grdb\fP under
\fB~/.gramps/import\fP directory.
.sp
The error encountered during import, export, or action, will be either
dumped to stdout (if these are exceptions handled by gramps) or to
\fIstderr\fP (if these are not handled). Use usual shell redirections of
\fIstdout\fP and \fIstderr\fP to save messages and errors in files.
.BI \-\^\-disable-sound
Disable sound server usage
.TP
.B \fBEXAMPLES\fP
To open an existing family tree and import an xml file into it, one
may type:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
.UNINDENT
.UNINDENT
.sp
The above changes the opened family tree, to do the same, but import
both in a temporary family tree and start an interactive session, one
may type:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
.UNINDENT
.UNINDENT
.sp
To import four databases (whose formats can be determined from their
names) and then check the resulting database for errors, one may type:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
\fB\-i\fP \fIfile4.wft\fP \fB\-a\fP \fIcheck\fP
.UNINDENT
.UNINDENT
.sp
To explicitly specify the formats in the above example, append file
names with appropriate \fB\-f\fP options:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-f\fP \fIgedcom\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-f\fP
\fIgramps\-pkg\fP \fB\-i\fP \fI~/db3.gramps\fP \fB\-f\fP \fIgramps\-xml\fP \fB\-i\fP \fIfile4.wft\fP
\fB\-f\fP \fIwft\fP \fB\-a\fP \fIcheck\fP
.UNINDENT
.UNINDENT
.sp
To record the database resulting from all imports, supply \fB\-e\fP flag (use
\fB\-f\fP if the filename does not allow gramps to guess the format):
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-e\fP \fI~/new\-package\fP
\fB\-f\fP \fIgramps\-pkg\fP
.UNINDENT
.UNINDENT
.sp
To import three databases and start interactive gramps session with the
result:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
.UNINDENT
.UNINDENT
.sp
To run the Verify tool from the commandline and output the result to
stdout:
.INDENT 7.0
.INDENT 3.5
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-a\fP \fItool\fP \fB\-p name=\fP \fIverify\fP
.UNINDENT
.UNINDENT
.sp
Finally, to start normal interactive session type:
.INDENT 7.0
.INDENT 3.5
\fBgramps\fP
.UNINDENT
.UNINDENT
.BI \-\^\-enable-sound
Enable sound server usage
.TP
.B \fBENVIRONMENT VARIABLES\fP
.BI \-\^\-espeaker= " HOSTNAME:PORT"
Host:port on which the sound server to use is running
\}
.SH "Operation"
.br
If the first argument on the command line does not start with dash (i.e. no
flag), gramps will attempt to open the file with the name given by the first
argument and start interactive session, ignoring the rest of the command line
arguments.
.LP
If the \fB\-O\fR flag is given, then gramps will try opening
the supplied database and then work with that data, as instructed by the
further command line parameters.
.LP
With or without the \fB\-O\fR flag, there could be multiple imports,
exports, and actions specified further on the command line by using \fB\-i\fR,
\fB\-e\fR, and \fB\-a\fR flags.
.LP
The order of \fB\-i\fR, \fB\-e\fR, or \fB\-a\fR options does not matter. The
actual order always is: all imports (if any) -> all actions (if any)
-> all exports (if any). But opening must always be first!
.LP
If no \fB\-O\fR or \fB\-i\fR option is given, gramps will launch its main
window and start the usual interactive session with the empty database,
since there is no data to process, anyway.
.LP
If no \fB\-e\fR or \fB\-a\fR options are given, gramps will launch its main
window and start the usual interactive session with the database resulted
from all imports. This database resides in the \fBimport_db.grdb\fR
under \fB~/.gramps/import\fR directory.
.LP
The error encountered during import, export, or action, will be either
dumped to \fIstdout\fR (if these are exceptions handled by gramps) or
to \fIstderr\fR (if these are not handled). Use usual shell redirections
of \fIstdout\fR and \fIstderr\fR to save messages and errors in files.
.SH EXAMPLES
.TP
To open an existing family tree and import an xml file into it, one may type:
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
.TP
The above changes the opened family tree, to do the same, but import both in a temporary family tree and start an interactive session, one may type:
\fBgramps\fR \fB\-i\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
.TP
To import four databases (whose formats can be determined from their names) and then check the resulting database for errors, one may type:
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
.TP
To explicitly specify the formats in the above example, append filenames with appropriate \fB\-f\fR options:
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
.TP
To record the database resulting from all imports, supply \fB\-e\fR flag (use \fB\-f\fR if the filename does not allow gramps to guess the format):
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-e\fR \fI~/new-package\fR \fB\-f\fR \fIgramps-pkg\fR
.TP
To import three databases and start interactive gramps session with the result:
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
.TP
To run the Verify tool from the commandline and output the result to stdout:
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB-a\fR \fItool\fR \fB-p\fR \fBname\fR=\fIverify\fR
.TP
Finally, to start normal interactive session type:
\fBgramps\fR
.SH ENVIRONMENT VARIABLES
The program checks whether these environment variables are set:
.sp
\fBLANG\fP \- describe, which language to use: Ex.: for polish language this
variable has to be set to pl_PL.UTF\-8.
.sp
\fBGRAMPSHOME\fP \- if set, force Gramps to use the specified directory to
keep program settings and databases there. By default, this variable is
not set and gramps assumes that the folder with all databases and pro
file settings should be created within the user profile folder
(described by environment variable HOME for Linux or USERPROFILE for
Windows 2000/XP).
.TP
.B \fBCONCEPTS\fP
Supports a python\-based plugin system, allowing import and export writ
ers, report generators, tools, and display filters to be added without
modification of the main program.
.sp
In addition to generating direct printer output, report generators also
target other systems, such as \fILibreOffice.org\fP , \fIAbiWord\fP , \fIHTML\fP,
or \fILaTeX\fP to allow the users to modify the format to suit their needs.
.UNINDENT
.sp
\fBKNOWN BUGS AND LIMITATIONS\fP
.sp
\fBFILES\fP
.INDENT 0.0
.INDENT 3.5
\fBLANG\fR - describe, which language to use:
Ex.: for polish language this variable has to be set to pl_PL.UTF-8.
\fBGRAMPSHOME\fR - if set, force Gramps to use the specified directory to keep
program settings and databases there. By default, this variable is not set and
gramps assumes that the folder with all databases and profile settings
should be created within the user profile folder (described by environment
variable HOME for Linux or USERPROFILE for Windows 2000/XP).
.SH CONCEPTS
Supports a python\-based plugin system, allowing import and export writers,
report generators, tools, and display filters to be added without modification
of the main program.
.LP
In addition to generating direct printer output, report generators also
target other systems, such as \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML,
or LaTeX to allow the users to modify the format to suit their needs.
.SH KNOWN BUGS AND LIMITATIONS
.SH FILES
.LP
\fI${PREFIX}/bin/gramps\fP
.sp
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
.sp
.br
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
.br
\fI${PREFIX}/share/\fP
.sp
\fI${HOME}/.gramps\fP
.UNINDENT
.UNINDENT
.INDENT 0.0
.TP
.B \fBAUTHORS\fP
Donald Allingham <\fI\%don@gramps\-project.org\fP>
\fI\%http://gramps\-project.org/\fP
.sp
.br
\fI${HOME}/.gramps\fP
.SH AUTHORS
Donald Allingham \fI<don@gramps-project.org>\fR
.br
\fIhttp://gramps.sourceforge.net\fR
.LP
This man page was originally written by:
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
.br
Brandon L. Griffith \fI<brandon@debian.org>\fR
.br
for inclusion in the Debian GNU/Linux system.
.sp
.LP
This man page is currently maintained by:
Gramps project <\fI\%xxx@gramps\-project.org\fP>
.TP
.B \fBDOCUMENTATION\fP
The user documentation is available through standard web browser
in the form of Gramps Manual.
.sp
.br
Gramps project \fI<xxx@gramps-project.org>\fR
.br
.SH DOCUMENTATION
The user documentation is available through standard GNOME Help browser
in the form of Gramps Manual. The manual is also available in XML format
as \fBgramps-manual.xml\fR under \fIdoc/gramps-manual/$LANG\fR in the official
source distribution.
.LP
The developer documentation can be found on the
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP
portal.
.UNINDENT
.sp
gramps(1) @VERSION@ gramps(1)
.\" Generated by docutils manpage writer.
.
\fIhttp://developers.gramps-project.org\fR site.

@@ -41,16 +41,16 @@ master_doc = 'nl'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.0'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'pl'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.0'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'pt_BR'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.0'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -41,16 +41,16 @@ master_doc = 'sv'
# General information about the project.
project = u'Gramps'
copyright = u'2015, Gramps project'
copyright = u'2012, Gramps project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '4.2'
version = '4.0'
# The full version, including alpha/beta/rc tags.
release = '4.2.0'
release = '4.0.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

@@ -24,7 +24,7 @@
"""
update_man.py for command line documentation.
Examples:
Examples:
python update_man.py -t
Tests if 'sphinx' and 'python' are well configured.
@@ -43,13 +43,13 @@ except:
DOCUTILS = False
LANGUAGES = ['sv', 'nl', 'pl', 'cs', 'pt_BR', 'fr']
VERSION = '5.0.0'
VERSION = '4.0.0'
DATE = ''
# You can set these variables from the command line.
SPHINXBUILD = 'sphinx-build'
if sys.platform == 'win32':
if sys.platform == 'win32':
pythonCmd = os.path.join(sys.prefix, 'bin', 'python.exe')
sphinxCmd = os.path.join(sys.prefix, 'bin', 'sphinx-build.exe')
elif sys.platform in ['linux2', 'darwin', 'cygwin']:
@@ -70,13 +70,13 @@ def tests():
os.system('''%(program)s -V''' % {'program': pythonCmd})
except:
print ('Please, install python')
try:
print("\n=================='Sphinx-build'=============================\n")
print("\n=================='Shpinx-build'=============================\n")
os.system('''%(program)s''' % {'program': sphinxCmd})
except:
print ('Please, install sphinx')
if not DOCUTILS:
print('\nNo docutils support, cannot use -m/--man and -o/--odt arguments.')
@@ -85,49 +85,49 @@ def main():
The utility for handling documentation stuff.
What is need by Gramps, nothing more.
"""
parser = ArgumentParser(
description='This program aims to handle documentation'
' and related translated versions.',
parser = ArgumentParser(
description='This program aims to handle documentation'
' and realted translated versions.',
)
parser.add_argument("-t", "--test",
action="store_true", dest="test", default=True,
help="test if 'python' and 'sphinx' are properly installed")
parser.add_argument("-b", "--build",
action="store_true", dest="build", default=False,
help="build man documentation (via sphinx-build)")
parser.add_argument("-m", "--man",
action="store_true", dest="man", default=False,
help="build man documentation (via docutils)")
parser.add_argument("-o", "--odt",
action="store_true", dest="odt", default=False,
help="build odt documentation (via docutils)")
args = parser.parse_args()
if args.test:
tests()
if args.build:
build()
if args.man and DOCUTILS:
man()
if args.odt and DOCUTILS:
odt()
def build():
"""
Build documentation.
"""
# testing stage
os.system('''%(program)s -b html . _build/html''' % {'program': sphinxCmd})
os.system('''%(program)s -b htmlhelp . _build/htmlhelp''' % {'program': sphinxCmd})
if DOCUTILS:
@@ -136,48 +136,48 @@ def build():
os.system('''%(program)s -b changes . _build/changes''' % {'program': sphinxCmd})
#os.system('''%(program)s -b linkcheck . _build/linkcheck''' % {'program': sphinxCmd})
os.system('''%(program)s -b gettext . _build/gettext''' % {'program': sphinxCmd})
for lang in LANGUAGES:
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
% {'lang': lang, 'program': sphinxCmd})
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
% {'lang': lang, 'program': sphinxCmd})
if DOCUTILS:
os.system('''%(program)s -b man %(lang)s %(lang)s'''
os.system('''%(program)s -b man %(lang)s %(lang)s'''
% {'lang': lang, 'program': sphinxCmd})
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
% {'lang': lang, 'program': sphinxCmd})
# for update/migration
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
% {'lang': lang, 'program': sphinxCmd})
def man():
"""
man file generation via docutils (python)
from docutils.core import publish_cmdline, default_description
from docutils.writers import manpage
"""
os.system('''rst2man en.rst gramps.1''')
os.system('''rst2man en.rst gramps.1''')
for lang in LANGUAGES:
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
% {'lang': lang})
def odt():
"""
odt file generation via docutils (python)
from docutils.core import publish_cmdline_to_binary, default_description
from docutils.writers.odf_odt import Writer, Reader
"""
os.system('''rst2odt en.rst gramps.odt''')
os.system('''rst2odt en.rst gramps.odt''')
for lang in LANGUAGES:
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
% {'lang': lang})
if __name__ == "__main__":
main()
main()

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