Compare commits
166 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e035fe57e6 | |||
| 985e42abe2 | |||
| 8bd6a16cf0 | |||
| 16f468654a | |||
| 6aef60a421 | |||
| ec50af2785 | |||
| c0f2ed96b2 | |||
| 8b7e7aed4e | |||
| c5e1ee690d | |||
| f08d4825e7 | |||
| c414e34ceb | |||
| 3fb1e0fd4a | |||
| ae8ba555eb | |||
| 479e70f835 | |||
| c796db53c5 | |||
| 84898abaaf | |||
| 2f983fade2 | |||
| f6a8fd888a | |||
| 1c1da5a8ea | |||
| 4679718cc2 | |||
| a52072d79e | |||
| c8a48b4b0e | |||
| f479381bfd | |||
| 33de80e6fd | |||
| 46c9eb079c | |||
| 1df64c2609 | |||
| 9aa00be403 | |||
| 3096db842c | |||
| 86474a1cf6 | |||
| fa246bc681 | |||
| 546e39d530 | |||
| 3b24bfc971 | |||
| 3e6fa30d60 | |||
| c1137c79e5 | |||
| e7749890f7 | |||
| 8a03b75b27 | |||
| bf9a7efe37 | |||
| 4e4a95926a | |||
| 09069234d4 | |||
| 2cba6ed51c | |||
| ab0ed284f1 | |||
| 8b24f681cb | |||
| 1ac68fb63d | |||
| 531f089f10 | |||
| aff081d139 | |||
| 4f821bc75c | |||
| 6eb47e400c | |||
| 80a748109a | |||
| 140ce8077d | |||
| 81aaf690f3 | |||
| 65ac980dae | |||
| 6bb686ec2d | |||
| 0894288476 | |||
| 8cf2831c51 | |||
| e52db3c15d | |||
| 8edf5690a4 | |||
| 37697f48a0 | |||
| 9c15d167b4 | |||
| bf4295b5b3 | |||
| 1eb50ff295 | |||
| 0698a42f8e | |||
| b3929af419 | |||
| 32f9ff1863 | |||
| 777c929f88 | |||
| e39dedb453 | |||
| fc3ed649f1 | |||
| dce76ae6fe | |||
| 285c5e429c | |||
| 724e09dfc9 | |||
| c09f8e4950 | |||
| 4bbc5c08f3 | |||
| a31d95bd28 | |||
| 02dc2ce868 | |||
| 3d19491f40 | |||
| c7d490f469 | |||
| 4690a03256 | |||
| a35db4f70a | |||
| 42f5c62154 | |||
| 7e456e996c | |||
| e0b02e80af | |||
| 51a9075613 | |||
| 51abf16ddb | |||
| 945f6e5b9f | |||
| e7edfbdc0a | |||
| 3e81d9dd88 | |||
| cfbb494612 | |||
| 52d5fbd042 | |||
| f0e156a112 | |||
| 839b2ee4de | |||
| 4beb29464a | |||
| c3ffffd943 | |||
| 15fc4fdf0f | |||
| 90c1f95ac5 | |||
| 713344f2f8 | |||
| 1f17db49c2 | |||
| 9e40603988 | |||
| 44f970baa8 | |||
| dceb900362 | |||
| 1110c18ae1 | |||
| e3f9f97864 | |||
| 10bd447ed5 | |||
| bc9cdd3896 | |||
| a36690aa26 | |||
| 1db7cd2051 | |||
| 2ff12bdbcf | |||
| 904cb8cf16 | |||
| d0d8fd4af1 | |||
| 102189d77a | |||
| bbaec4b5ed | |||
| 2cfa9299d4 | |||
| 515b9525dd | |||
| a393d793fc | |||
| aa8e6754c5 | |||
| bd937a1842 | |||
| a40d4c4482 | |||
| 7376843595 | |||
| 8a40eeafe6 | |||
| 42138f0c2e | |||
| bdfce6bf1b | |||
| 8b463b8aae | |||
| 2d8dab099b | |||
| 5cba134809 | |||
| 1f41eddfea | |||
| 38c9e2800c | |||
| eea4d3e0c9 | |||
| 4442a74690 | |||
| 5688c351f1 | |||
| cbc5b831b7 | |||
| c69eba2e4e | |||
| 9c6d5ea86b | |||
| d323b5013f | |||
| 953a0ac8b5 | |||
| 1019617d0f | |||
| 6c1b155953 | |||
| 6a1d059e53 | |||
| 5f318a93b3 | |||
| 03e1ef85fc | |||
| b931b9aa9b | |||
| ff0cf470c5 | |||
| 18cebd92dd | |||
| 3430c34988 | |||
| 380490c6a2 | |||
| 4a25ab7a25 | |||
| 8812e82f49 | |||
| 96471a964b | |||
| 29ff7a386b | |||
| 2c7e58e187 | |||
| 1ff33d6377 | |||
| 5ff5769845 | |||
| 997cd04fe2 | |||
| 45be6866ad | |||
| a5ac1da9fd | |||
| d67271a2cf | |||
| 2fb7a5e048 | |||
| 5f69c64971 | |||
| 602aa8c1bd | |||
| 0c270f4862 | |||
| 053efc5f75 | |||
| ff705565a4 | |||
| b41598c645 | |||
| b1d2ca5dc4 | |||
| 4a8414e5c8 | |||
| 6bfe45f079 | |||
| 38d8332970 | |||
| 97eff89616 | |||
| 2ae3583c3a |
@@ -1,3 +1,24 @@
|
||||
Version 3.2.4 -- the "Tententen" bug fix release.
|
||||
* fix a crash on newer distro's after an export is finished
|
||||
* styled notes cleanup and consistency improvement (nar web behaves like the pdf/html output of reports)
|
||||
* newlines in styled notes are written as newlines so users can make simple lists
|
||||
* many NarrativeWeb fixes
|
||||
* gedcom output fixes
|
||||
* non latin character fixes (mainly for windows)
|
||||
* recursive filter fixes
|
||||
* undo fixes
|
||||
* many translation updates
|
||||
|
||||
Version 3.2.3 -- the "I used to eat there. Really good noodles." release.
|
||||
* Bug fixes:
|
||||
-> several GLADE fixes
|
||||
-> several GEDCOM fixes (both export and import)
|
||||
-> several crash fixes
|
||||
-> encoding fix (Windows only)
|
||||
-> privacy/living fixes
|
||||
-> updates to NarrativeWeb and the css stylsheets
|
||||
* Translation updates: bg, ca, de, es, fr, he, nb, nl, pl, sk, sv
|
||||
|
||||
Version 3.2.2 -- the "Mea navis aëricumbens anguillis abundat" release.
|
||||
* This release is a quick fix to a problem introduced by NarrativeWeb in the previous release.
|
||||
* Also includes a few small fixes and translation updates to hr and it.
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ dnl May need to run automake && aclocal first
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
dnl NOTE: arg to macro below becomes the "VERSION"
|
||||
AC_INIT(gramps, 3.2.2, [gramps-bugs@lists.sourceforge.net])
|
||||
AC_INIT(gramps, 3.2.4, [gramps-bugs@lists.sourceforge.net])
|
||||
AC_CONFIG_SRCDIR(configure.in)
|
||||
AM_INIT_AUTOMAKE([1.6.3 foreign])
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -2,7 +2,7 @@ Source: gramps
|
||||
Section: gnome
|
||||
Priority: optional
|
||||
Maintainer: Stéphane Charette <stephanecharette@gmail.com>
|
||||
Build-Depends-Indep: libxml-parser-perl, python-gtk2, gettext, libgconf2-dev, python-central (>= 0.5.6), python, intltool
|
||||
Build-Depends-Indep: libxml-parser-perl, python-gtk2, gettext, python-central (>= 0.5.6), python, intltool
|
||||
Build-Depends: debhelper (>= 7)
|
||||
Standards-Version: 3.8.3
|
||||
Homepage: http://www.gramps-project.org/
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#########################################
|
||||
The :class:`RelationshipCalculator` Class
|
||||
#########################################
|
||||
|
||||
Contents:
|
||||
|
||||
.. automodule:: Relationship
|
||||
.. autoclass:: RelationshipCalculator
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
+1160
-1144
File diff suppressed because it is too large
Load Diff
+6
-16
@@ -22,28 +22,14 @@
|
||||
|
||||
""" Unittest for testing POTFILES.in and Makefile contents """
|
||||
|
||||
# PYTHONPATH=/../src python po_test.py
|
||||
|
||||
import unittest
|
||||
import os
|
||||
import glob
|
||||
from test import test_util
|
||||
test_util.path_append_parent()
|
||||
|
||||
excluded_files = ["src/DataViews/_MapView.py",
|
||||
"src/plugins/PHPGedViewConnector.py",
|
||||
"src/plugins/phpgedview.glade",
|
||||
"src/plugins/Ancestors.py",
|
||||
"src/plugins/DesGraph.py",
|
||||
"src/plugins/FtmStyleAncestors.py",
|
||||
"src/plugins/FtmStyleDescendants.py",
|
||||
"src/plugins/IndivSummary.py",
|
||||
"src/date_test.py",
|
||||
"src/plugins/CmdRef.py",
|
||||
"src/plugins/DumpGenderStats.py",
|
||||
"src/plugins/Eval.py",
|
||||
"src/plugins/Leak.py",
|
||||
"src/plugins/TestcaseGenerator.py"
|
||||
]
|
||||
|
||||
def get_potfile(filename):
|
||||
fp = open(filename, "r")
|
||||
retvals = []
|
||||
@@ -53,6 +39,10 @@ def get_potfile(filename):
|
||||
fp.close()
|
||||
return retvals
|
||||
|
||||
# POTFILES.skip
|
||||
|
||||
excluded_files = get_potfile("../POTFILES.skip")
|
||||
|
||||
class TestPOT(unittest.TestCase):
|
||||
potfiles = get_potfile("../POTFILES.in")
|
||||
count = 1
|
||||
|
||||
@@ -126,6 +126,7 @@ class Bookmarks :
|
||||
self.uistate.uimanager.remove_ui(self.active)
|
||||
self.uistate.uimanager.remove_action_group(self.action_group)
|
||||
self.action_group = gtk.ActionGroup('Bookmarks')
|
||||
self.uistate.uimanager.ensure_update()
|
||||
self.active = DISABLED
|
||||
|
||||
def redraw_and_report_change(self):
|
||||
|
||||
@@ -116,18 +116,17 @@ class DateDisplayCA(DateDisplay):
|
||||
"""
|
||||
Catalan language date display class.
|
||||
"""
|
||||
# TODO: Translate these month strings:
|
||||
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
|
||||
u"June", u"July", u"August", u"September", u"October",
|
||||
u"November", u"December" )
|
||||
long_months = ( u"", u"Gener", u"Febrer", u"Març", u"Abril", u"Maig",
|
||||
u"Juny", u"Juliol", u"Agost", u"Setembre", u"Octubre",
|
||||
u"Novembre", u"Desembre" )
|
||||
|
||||
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
|
||||
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
|
||||
short_months = ( u"", u"Gen", u"Feb", u"Mar", u"Abr", u"Mai", u"Jun",
|
||||
u"Jul", u"Ago", u"Set", u"Oct", u"Nov", u"Des" )
|
||||
|
||||
calendar = (
|
||||
"", u"Julià", u"Hebreu",
|
||||
u"Revolucionari", u"Persa", u"Islàmic",
|
||||
u"Swedish"
|
||||
u"Suec"
|
||||
)
|
||||
|
||||
_mod_str = ("", u"abans de ", u"després de ", u"cap a ", "", "", "")
|
||||
|
||||
@@ -102,18 +102,17 @@ class DateDisplayCZ(DateDisplay):
|
||||
"""
|
||||
Czech language date display class.
|
||||
"""
|
||||
# TODO: Translate these month strings:
|
||||
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
|
||||
u"June", u"July", u"August", u"September", u"October",
|
||||
u"November", u"December" )
|
||||
long_months = ( u"", u"Leden", u"Únor", u"Březen", u"Duben", u"Květen",
|
||||
u"Červen", u"červenec", u"Srpen", u"Září", u"Říjen",
|
||||
u"Listopad", u"Prosinec" )
|
||||
|
||||
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
|
||||
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
|
||||
short_months = ( u"", u"Led", u"Úno", u"Bře", u"Dub", u"Kvě", u"čer",
|
||||
u"Čvc", u"Srp", u"Zář", u"Říj", u"Lis", u"Pro" )
|
||||
|
||||
calendar = (
|
||||
"", u"juliánský", u"hebrejský",
|
||||
u"republikánský", u"perský", u"islámský",
|
||||
u"swedish"
|
||||
u"švédský"
|
||||
)
|
||||
|
||||
_mod_str = ("", u"před ", u"po ", u"kolem ", "", "", "")
|
||||
|
||||
@@ -116,13 +116,13 @@ class DateDisplayFI(DateDisplay):
|
||||
"""
|
||||
Finnish language date display class.
|
||||
"""
|
||||
# TODO: Translate these month strings:
|
||||
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
|
||||
u"June", u"July", u"August", u"September", u"October",
|
||||
u"November", u"December" )
|
||||
long_months = (u"", u"Tammikuu", u"Helmikuu", u"Maaliskuu", u"Huhtikuu",
|
||||
u"Toukokuu", u"Kesäkuu", u"Heinäkuu", u"Elokuu",
|
||||
u"Syyskuu", u"Lokakuu", u"Marraskuu", u"Joulukuu")
|
||||
|
||||
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
|
||||
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
|
||||
short_months = (u"", u"Tammi", u"Helmi", u"Maali", u"Huhti", u"Touko",
|
||||
u"Kesäk", u"Heinä", u"Eloku", u"Syysk", u"Lokak", u"Marra",
|
||||
u"Joulu")
|
||||
|
||||
calendar = ("",
|
||||
u"juliaaninen",
|
||||
|
||||
@@ -101,13 +101,13 @@ class DateDisplayLT(DateDisplay):
|
||||
"""
|
||||
Lithuanian language date display class.
|
||||
"""
|
||||
# TODO: Translate these month strings:
|
||||
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
|
||||
u"June", u"July", u"August", u"September", u"October",
|
||||
u"November", u"December" )
|
||||
|
||||
long_months = ( u"", u"Sausis", u"Vasaris", u"Kovas", u"Balandis", u"Gegužė",
|
||||
u"Birželis", u"Liepa", u"Rugpjūtis", u"Rugsejis", u"Spalis",
|
||||
u"Lapkritis", u"Gruodis" )
|
||||
|
||||
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
|
||||
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
|
||||
short_months = ( u"", u"Sau", u"Vas", u"Kov", u"Bal", u"Geg", u"Bir",
|
||||
u"Lie", u"Rgp", u"Rgs", u"Spa", u"Lap", u"Grd" )
|
||||
|
||||
calendar = (
|
||||
u"", u"julijaus",
|
||||
|
||||
+51
-17
@@ -20,6 +20,7 @@
|
||||
#
|
||||
|
||||
# Polish version 2007 by Piotr Czubaszek
|
||||
# Updated in 2010 by Łukasz Rymarczyk
|
||||
|
||||
"""
|
||||
Polish-specific classes for parsing and displaying dates.
|
||||
@@ -85,7 +86,31 @@ class DateParserPL(DateParser):
|
||||
month_to_int[u"grudzień"] = 12
|
||||
month_to_int[u"gru"] = 12
|
||||
month_to_int[u"XII"] = 12
|
||||
|
||||
# Alternative forms: declined nouns
|
||||
month_to_int[u"stycznia"] = 1
|
||||
month_to_int[u"lutego"] = 2
|
||||
month_to_int[u"marca"] = 3
|
||||
month_to_int[u"kwietnia"] = 4
|
||||
month_to_int[u"maja"] = 5
|
||||
month_to_int[u"czerwca"] = 6
|
||||
month_to_int[u"lipca"] = 7
|
||||
month_to_int[u"sierpnia"] = 8
|
||||
month_to_int[u"września"] = 9
|
||||
month_to_int[u"października"] = 10
|
||||
month_to_int[u"listopada"] = 11
|
||||
month_to_int[u"grudnia"] = 12
|
||||
# Alternative forms: nouns without polish accent letters
|
||||
# (misspellings sometimes used in emails)
|
||||
month_to_int[u"styczen"] = 1
|
||||
month_to_int[u"kwiecien"] = 4
|
||||
month_to_int[u"sierpien"] = 8
|
||||
month_to_int[u"wrzesien"] = 9
|
||||
month_to_int[u"pazdziernik"] = 10
|
||||
month_to_int[u"grudzien"] = 12
|
||||
month_to_int[u"wrzesnia"] = 9
|
||||
month_to_int[u"pazdziernika"] = 10
|
||||
month_to_int[u"paz"] = 10
|
||||
|
||||
modifier_to_int = {
|
||||
u'przed' : Date.MOD_BEFORE,
|
||||
u'po' : Date.MOD_AFTER,
|
||||
@@ -93,26 +118,34 @@ class DateParserPL(DateParser):
|
||||
u'ok.' : Date.MOD_ABOUT,
|
||||
u'circa' : Date.MOD_ABOUT,
|
||||
u'ca.' : Date.MOD_ABOUT,
|
||||
# Alternative forms: misspellings sometimes used in emails
|
||||
u'okolo' : Date.MOD_ABOUT,
|
||||
u'ok' : Date.MOD_ABOUT,
|
||||
}
|
||||
|
||||
calendar_to_int = {
|
||||
u'gregoriański' : Date.CAL_GREGORIAN,
|
||||
u'gregoriański' : Date.CAL_GREGORIAN,
|
||||
u'greg.' : Date.CAL_GREGORIAN,
|
||||
u'juliański' : Date.CAL_JULIAN,
|
||||
u'juliański' : Date.CAL_JULIAN,
|
||||
u'jul.' : Date.CAL_JULIAN,
|
||||
u'hebrajski' : Date.CAL_HEBREW,
|
||||
u'hebr.' : Date.CAL_HEBREW,
|
||||
u'islamski' : Date.CAL_ISLAMIC,
|
||||
u'islamski' : Date.CAL_ISLAMIC,
|
||||
u'isl.' : Date.CAL_ISLAMIC,
|
||||
u'francuski republikański': Date.CAL_FRENCH,
|
||||
u'franc.' : Date.CAL_FRENCH,
|
||||
u'perski' : Date.CAL_PERSIAN,
|
||||
u'swedish' : Date.CAL_SWEDISH,
|
||||
u's' : Date.CAL_SWEDISH,
|
||||
u'perski' : Date.CAL_PERSIAN,
|
||||
u'szwedzki' : Date.CAL_SWEDISH,
|
||||
u's' : Date.CAL_SWEDISH,
|
||||
# Alternative forms: nouns without polish accent letters
|
||||
# (misspellings sometimes used in emails)
|
||||
u'gregorianski' : Date.CAL_GREGORIAN,
|
||||
u'julianski' : Date.CAL_JULIAN,
|
||||
u'francuski republikanski': Date.CAL_FRENCH,
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
u'szacowany' : Date.QUAL_ESTIMATED,
|
||||
u'szacowany' : Date.QUAL_ESTIMATED,
|
||||
u'szac.' : Date.QUAL_ESTIMATED,
|
||||
u'obliczony' : Date.QUAL_CALCULATED,
|
||||
u'obl.' : Date.QUAL_CALCULATED,
|
||||
@@ -123,11 +156,12 @@ class DateParserPL(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)",re.IGNORECASE)
|
||||
self._range = re.compile(u"(między)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
# Also handle a common mistakes
|
||||
self._range = re.compile(u"((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2= re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -139,13 +173,13 @@ class DateDisplayPL(DateDisplay):
|
||||
"""
|
||||
Polish language date display class.
|
||||
"""
|
||||
# TODO: Translate these month strings:
|
||||
long_months = ( u"", u"January", u"February", u"March", u"April", u"May",
|
||||
u"June", u"July", u"August", u"September", u"October",
|
||||
u"November", u"December" )
|
||||
|
||||
long_months = ( u"", u"Styczeń", u"Luty", u"Marzec", u"Kwiecień", u"Maj",
|
||||
u"Czerwiec", u"Lipiec", u"Sierpień", u"Wrzesień", u"Październik",
|
||||
u"Listopad", u"Grudzień" )
|
||||
|
||||
short_months = ( u"", u"Jan", u"Feb", u"Mar", u"Apr", u"May", u"Jun",
|
||||
u"Jul", u"Aug", u"Sep", u"Oct", u"Nov", u"Dec" )
|
||||
short_months = ( u"", u"Sty", u"Lut", u"Mar", u"Kwi", u"Maj", u"Cze",
|
||||
u"Lip", u"Sie", u"Wrz", u"Paź", u"Lis", u"Gru" )
|
||||
|
||||
calendar = (
|
||||
"", u"juliański", u"hebrajski",
|
||||
|
||||
+18
-7
@@ -307,19 +307,30 @@ class WarnHandler(RotateHandler):
|
||||
self.button = button
|
||||
button.on_clicked(self.display)
|
||||
self.timer = None
|
||||
self.last_line = '-1'
|
||||
|
||||
def emit(self, record):
|
||||
if self.timer:
|
||||
gobject.source_remove(self.timer)
|
||||
gobject.timeout_add(180*1000, self._clear)
|
||||
if self.timer is None:
|
||||
#check every 3 minutes if warn button can disappear
|
||||
self.timer = gobject.timeout_add(3*60*1000, self._check_clear)
|
||||
RotateHandler.emit(self, record)
|
||||
self.button.show()
|
||||
|
||||
def _check_clear(self):
|
||||
new_last_line = self.get_buffer()[-1]
|
||||
if self.last_line == new_last_line:
|
||||
#buffer has not changed for 3 minutes, let's clear it:
|
||||
self._clear()
|
||||
return False
|
||||
else:
|
||||
self.last_line = new_last_line
|
||||
return True
|
||||
|
||||
def _clear(self):
|
||||
self.button.hide()
|
||||
self.set_capacity(self._capacity)
|
||||
self.last_line = '-1'
|
||||
self.timer = None
|
||||
return False
|
||||
|
||||
def display(self, obj):
|
||||
obj.hide()
|
||||
@@ -329,7 +340,6 @@ class WarnHandler(RotateHandler):
|
||||
buf = msg.get_buffer()
|
||||
for i in self.get_formatted_log():
|
||||
buf.insert_at_cursor(i + '\n')
|
||||
self.set_capacity(self._capacity)
|
||||
top.run()
|
||||
top.destroy()
|
||||
|
||||
@@ -413,7 +423,7 @@ class DisplayState(gen.utils.Callback):
|
||||
navigation type and group.
|
||||
"""
|
||||
history = self.get_history(nav_type, nav_group)
|
||||
return history.present()
|
||||
return history.present() if history else None
|
||||
|
||||
def set_active(self, handle, nav_type, nav_group=0):
|
||||
"""
|
||||
@@ -421,7 +431,8 @@ class DisplayState(gen.utils.Callback):
|
||||
the given handle.
|
||||
"""
|
||||
history = self.get_history(nav_type, nav_group)
|
||||
history.push(handle)
|
||||
if history:
|
||||
history.push(handle)
|
||||
|
||||
def set_sensitive(self, state):
|
||||
self.window.set_sensitive(state)
|
||||
|
||||
+26
-12
@@ -3,6 +3,7 @@
|
||||
#
|
||||
# Copyright (C) 2004-2007 Donald N. Allingham
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
# Copyright (C) 2008 Benny Malengier
|
||||
# Contribution 2009 by Brad Crittenden <brad [AT] bradcrittenden.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@@ -92,6 +93,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
|
||||
"""
|
||||
|
||||
#override predefined do_xxx signal handlers
|
||||
__gsignals__ = {"apply": "override", "cancel": "override",
|
||||
"close": "override", "prepare": "override"}
|
||||
|
||||
@@ -164,6 +166,22 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-go-forward':
|
||||
self.forward_button = arg
|
||||
|
||||
def get_cancel_button(self, arg):
|
||||
if isinstance(arg, gtk.HBox):
|
||||
arg.forall(self._cancel_btn)
|
||||
|
||||
def _cancel_btn(self, arg):
|
||||
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-cancel':
|
||||
self.cancel_button = arg
|
||||
|
||||
def get_close_button(self, arg):
|
||||
if isinstance(arg, gtk.HBox):
|
||||
arg.forall(self._close_btn)
|
||||
|
||||
def _close_btn(self, arg):
|
||||
if isinstance(arg, gtk.Button) and arg.get_label() == 'gtk-close':
|
||||
self.close_button = arg
|
||||
|
||||
def build_menu_names(self, obj):
|
||||
"""Override ManagedWindow method."""
|
||||
return (self.top_title, None)
|
||||
@@ -382,22 +400,18 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
self.set_page_complete(page, False)
|
||||
self.set_page_type(page, gtk.ASSISTANT_PAGE_SUMMARY)
|
||||
|
||||
|
||||
def do_apply(self):
|
||||
pass
|
||||
|
||||
def do_cancel(self):
|
||||
if self.writestarted :
|
||||
return True
|
||||
else :
|
||||
self.close()
|
||||
|
||||
def do_close(self):
|
||||
if self.writestarted :
|
||||
return True
|
||||
else :
|
||||
pass
|
||||
else :
|
||||
self.close()
|
||||
|
||||
def do_cancel(self):
|
||||
self.do_close()
|
||||
|
||||
def do_prepare(self, page):
|
||||
"""
|
||||
The "prepare" signal is emitted when a new page is set as the
|
||||
@@ -462,7 +476,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
#Allow for exotic error: file is still not correct
|
||||
self.check_fileselect(self.chooser, show=False)
|
||||
if self.get_page_complete(self.chooser) :
|
||||
filename = Utils.get_unicode_path(self.chooser.get_filename())
|
||||
filename = Utils.get_unicode_path_from_file_chooser(self.chooser.get_filename())
|
||||
name = os.path.split(filename)[1]
|
||||
folder = os.path.split(filename)[0]
|
||||
confirm_text = _(
|
||||
@@ -536,7 +550,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
|
||||
def close(self, *obj) :
|
||||
#clean up ManagedWindow menu, then destroy window, bring forward parent
|
||||
|
||||
gtk.Assistant.destroy(self)
|
||||
ManagedWindow.ManagedWindow.close(self,*obj)
|
||||
|
||||
def get_intro_text(self):
|
||||
@@ -596,7 +610,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
|
||||
hasattr(self.option_box_instance, "no_fileselect")):
|
||||
filename = ""
|
||||
else:
|
||||
filename = Utils.get_unicode_path(self.chooser.get_filename())
|
||||
filename = Utils.get_unicode_path_from_file_chooser(self.chooser.get_filename())
|
||||
config.set('paths.recent-export-dir', os.path.split(filename)[0])
|
||||
ix = self.get_selected_format_index()
|
||||
config.set('behavior.recent-export-type', ix)
|
||||
|
||||
@@ -57,7 +57,7 @@ class MatchesRegexpOf(Rule):
|
||||
|
||||
def apply(self, db, note):
|
||||
""" Apply the filter """
|
||||
text = unicode(note.get())
|
||||
text = note.get()
|
||||
if self.match.match(text) is not None:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -49,7 +49,7 @@ class MatchesSubstringOf(Rule):
|
||||
|
||||
def apply(self, db, note):
|
||||
""" Apply the filter """
|
||||
text = unicode(note.get())
|
||||
text = note.get()
|
||||
if text.upper().find(self.list[0].upper()) != -1:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -46,10 +46,10 @@ def filter_database(db, progress, filter_name):
|
||||
"""Returns a list of person handles"""
|
||||
|
||||
filt = MatchesFilter([filter_name])
|
||||
progress.set_header('Preparing sub-filter')
|
||||
filt.prepare(db)
|
||||
progress.set_header(_('Preparing sub-filter'))
|
||||
filt.requestprepare(db)
|
||||
|
||||
progress.set_header('Retrieving all sub-filter matches')
|
||||
progress.set_header(_('Retrieving all sub-filter matches'))
|
||||
matches = []
|
||||
for handle in db.iter_person_handles():
|
||||
person = db.get_person_from_handle(handle)
|
||||
@@ -57,7 +57,7 @@ def filter_database(db, progress, filter_name):
|
||||
matches.append(handle)
|
||||
progress.step()
|
||||
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
return matches
|
||||
|
||||
@@ -75,7 +75,8 @@ def get_family_handle_people(db, exclude_handle, family_handle):
|
||||
possibly_add_handle(family.get_mother_handle())
|
||||
|
||||
for child_ref in family.get_child_ref_list():
|
||||
possibly_add_handle(child_ref.get_reference_handle())
|
||||
if child_ref:
|
||||
possibly_add_handle(child_ref.get_reference_handle())
|
||||
|
||||
return people
|
||||
|
||||
@@ -132,7 +133,7 @@ class DeepRelationshipPathBetween(Rule):
|
||||
root_person = db.get_person_from_gramps_id(root_person_id)
|
||||
|
||||
progress = ProgressMeter(_('Finding relationship paths'))
|
||||
progress.set_pass(header=_('Evaluating people'), mode=ProgressMeter.MODE_ACTIVITY)
|
||||
progress.set_pass(header=_('Evaluating people'), mode=ProgressMeter.MODE_ACTIVITY)
|
||||
|
||||
filter_name = self.list[1]
|
||||
target_people = filter_database(db, progress, filter_name)
|
||||
|
||||
@@ -48,11 +48,12 @@ class FamilyWithIncompleteEvent(Rule):
|
||||
def apply(self,db,person):
|
||||
for family_handle in person.get_family_handle_list():
|
||||
family = db.get_family_from_handle(family_handle)
|
||||
for event_ref in family.get_event_ref_list():
|
||||
if event_ref:
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
if not event.get_place_handle():
|
||||
return True
|
||||
if not event.get_date_object():
|
||||
return True
|
||||
if family:
|
||||
for event_ref in family.get_event_ref_list():
|
||||
if event_ref:
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
if not event.get_place_handle():
|
||||
return True
|
||||
if not event.get_date_object():
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -58,7 +58,9 @@ class HasBirth(Rule):
|
||||
|
||||
def apply(self,db,person):
|
||||
for event_ref in person.get_event_ref_list():
|
||||
if event_ref.role != EventRoleType.PRIMARY:
|
||||
if not event_ref:
|
||||
continue
|
||||
elif event_ref.role != EventRoleType.PRIMARY:
|
||||
# Only match primaries, no witnesses
|
||||
continue
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
|
||||
@@ -68,14 +68,15 @@ class HasCommonAncestorWith(Rule):
|
||||
|
||||
for fam_handle in person.get_parent_family_handle_list():
|
||||
fam = db.get_family_from_handle(fam_handle)
|
||||
for par_handle in (fam.get_father_handle(), fam.get_mother_handle()):
|
||||
if par_handle:
|
||||
par = db.get_person_from_handle(par_handle)
|
||||
if par and par.handle not in self.ancestor_cache:
|
||||
self.add_ancs(db, par)
|
||||
if par:
|
||||
self.ancestor_cache[person.handle].add(par)
|
||||
self.ancestor_cache[person.handle] |= self.ancestor_cache[par.handle]
|
||||
if fam:
|
||||
for par_handle in (fam.get_father_handle(), fam.get_mother_handle()):
|
||||
if par_handle:
|
||||
par = db.get_person_from_handle(par_handle)
|
||||
if par and par.handle not in self.ancestor_cache:
|
||||
self.add_ancs(db, par)
|
||||
if par:
|
||||
self.ancestor_cache[person.handle].add(par)
|
||||
self.ancestor_cache[person.handle] |= self.ancestor_cache[par.handle]
|
||||
|
||||
def reset(self):
|
||||
self.ancestor_cache = {}
|
||||
|
||||
@@ -41,7 +41,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# HasCommonAncestorWithFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
|
||||
class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith):
|
||||
"""Rule that checks for a person that has a common ancestor with
|
||||
someone matching a filter"""
|
||||
|
||||
@@ -64,7 +64,7 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
|
||||
self.ancestor_cache = {}
|
||||
self.with_people = []
|
||||
filt = MatchesFilter(self.list)
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for handle in db.iter_person_handles():
|
||||
person = db.get_person_from_handle(handle)
|
||||
if filt.apply (db, person):
|
||||
@@ -73,4 +73,4 @@ class HasCommonAncestorWithFilterMatch(HasCommonAncestorWith,MatchesFilter):
|
||||
#fill list of ancestor of person if not present yet
|
||||
if handle not in self.ancestor_cache:
|
||||
self.add_ancs(db, person)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
@@ -58,7 +58,9 @@ class HasDeath(Rule):
|
||||
|
||||
def apply(self,db,person):
|
||||
for event_ref in person.get_event_ref_list():
|
||||
if event_ref.role != EventRoleType.PRIMARY:
|
||||
if not event_ref:
|
||||
continue
|
||||
elif event_ref.role != EventRoleType.PRIMARY:
|
||||
# Only match primaries, no witnesses
|
||||
continue
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
|
||||
@@ -53,10 +53,13 @@ class HasFamilyAttribute(Rule):
|
||||
return False
|
||||
for f_id in person.get_family_handle_list():
|
||||
f = db.get_family_from_handle(f_id)
|
||||
if not f:
|
||||
continue
|
||||
for attr in f.get_attribute_list():
|
||||
name_match = self.list[0] == attr.get_type()
|
||||
value_match = \
|
||||
attr.get_value().upper().find(self.list[1].upper()) != -1
|
||||
if name_match and value_match:
|
||||
return True
|
||||
if attr:
|
||||
name_match = self.list[0] == attr.get_type()
|
||||
value_match = \
|
||||
attr.get_value().upper().find(self.list[1].upper()) != -1
|
||||
if name_match and value_match:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -64,6 +64,8 @@ class HasFamilyEvent(Rule):
|
||||
def apply(self,db,person):
|
||||
for f_id in person.get_family_handle_list():
|
||||
f = db.get_family_from_handle(f_id)
|
||||
if not f:
|
||||
continue
|
||||
for event_ref in f.get_event_ref_list():
|
||||
if not event_ref:
|
||||
continue
|
||||
|
||||
@@ -61,9 +61,10 @@ class HasRelationship(Rule):
|
||||
# count children and look for a relationship type match
|
||||
for f_id in person.get_family_handle_list():
|
||||
f = db.get_family_from_handle(f_id)
|
||||
cnt = cnt + len(f.get_child_ref_list())
|
||||
if self.list[1] and specified_type == f.get_relationship():
|
||||
rel_type = 1
|
||||
if f:
|
||||
cnt = cnt + len(f.get_child_ref_list())
|
||||
if self.list[1] and specified_type == f.get_relationship():
|
||||
rel_type = 1
|
||||
|
||||
# if number of relations specified
|
||||
if self.list[0]:
|
||||
|
||||
@@ -171,7 +171,7 @@ class HasTextMatchingSubstringOf(Rule):
|
||||
self.repo_map.update(
|
||||
|
||||
repo.handle for repo in self.db.iter_repositories()
|
||||
if self.match_object(repo)
|
||||
if repo and self.match_object(repo)
|
||||
|
||||
)
|
||||
|
||||
|
||||
@@ -48,9 +48,10 @@ class HaveAltFamilies(Rule):
|
||||
def apply(self,db,person):
|
||||
for fhandle in person.get_parent_family_handle_list():
|
||||
family = db.get_family_from_handle(fhandle)
|
||||
ref = [ ref for ref in family.get_child_ref_list() \
|
||||
if ref.ref == person.handle]
|
||||
if ref[0].get_father_relation() == ChildRefType.ADOPTED \
|
||||
or ref[0].get_mother_relation() == ChildRefType.ADOPTED:
|
||||
return True
|
||||
if family:
|
||||
ref = [ ref for ref in family.get_child_ref_list() \
|
||||
if ref.ref == person.handle]
|
||||
if ref[0].get_father_relation() == ChildRefType.ADOPTED \
|
||||
or ref[0].get_mother_relation() == ChildRefType.ADOPTED:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -47,4 +47,4 @@ class HaveChildren(Rule):
|
||||
def apply(self,db,person):
|
||||
for family_handle in person.get_family_handle_list():
|
||||
family = db.get_family_from_handle(family_handle)
|
||||
return len(family.get_child_ref_list()) > 0
|
||||
return (family is not None) and len(family.get_child_ref_list()) > 0
|
||||
|
||||
@@ -40,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsAncestorOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsAncestorOfFilterMatch(IsAncestorOf,MatchesFilter):
|
||||
class IsAncestorOfFilterMatch(IsAncestorOf):
|
||||
"""Rule that checks for a person that is an ancestor of
|
||||
someone matched by a filter"""
|
||||
|
||||
@@ -66,11 +66,11 @@ class IsAncestorOfFilterMatch(IsAncestorOf,MatchesFilter):
|
||||
first = 1
|
||||
|
||||
filt = MatchesFilter(self.list[0:1])
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for person in db.iter_people():
|
||||
if filt.apply(db, person):
|
||||
self.init_ancestor_list(db, person, first)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
def reset(self):
|
||||
self.map.clear()
|
||||
|
||||
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsChildOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsChildOfFilterMatch(MatchesFilter):
|
||||
class IsChildOfFilterMatch(Rule):
|
||||
"""Rule that checks for a person that is a child
|
||||
of someone matched by a filter"""
|
||||
|
||||
@@ -52,11 +53,11 @@ class IsChildOfFilterMatch(MatchesFilter):
|
||||
self.db = db
|
||||
self.map = set()
|
||||
filt = MatchesFilter(self.list)
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for person in db.iter_people():
|
||||
if filt.apply(db, person):
|
||||
self.init_list(person)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
def reset(self):
|
||||
self.map.clear()
|
||||
@@ -69,5 +70,6 @@ class IsChildOfFilterMatch(MatchesFilter):
|
||||
return
|
||||
for fam_id in person.get_family_handle_list():
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
self.map.update(child_ref.ref
|
||||
for child_ref in fam.get_child_ref_list())
|
||||
if fam:
|
||||
self.map.update(child_ref.ref
|
||||
for child_ref in fam.get_child_ref_list())
|
||||
|
||||
@@ -83,17 +83,18 @@ class IsDescendantFamilyOf(Rule):
|
||||
|
||||
for family_handle in person.get_family_handle_list():
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if family:
|
||||
# Add every child recursively
|
||||
for child_ref in family.get_child_ref_list():
|
||||
if child_ref:
|
||||
self.add_matches(self.db.get_person_from_handle(child_ref.ref))
|
||||
|
||||
# Add every child recursively
|
||||
for child_ref in family.get_child_ref_list():
|
||||
self.add_matches(self.db.get_person_from_handle(child_ref.ref))
|
||||
|
||||
# Add spouse
|
||||
if person.handle == family.get_father_handle():
|
||||
spouse_handle = family.get_mother_handle()
|
||||
else:
|
||||
spouse_handle = family.get_father_handle()
|
||||
self.matches.add(spouse_handle)
|
||||
# Add spouse
|
||||
if person.handle == family.get_father_handle():
|
||||
spouse_handle = family.get_mother_handle()
|
||||
else:
|
||||
spouse_handle = family.get_father_handle()
|
||||
self.matches.add(spouse_handle)
|
||||
|
||||
def exclude(self):
|
||||
# This removes root person and his/her spouses from the matches set
|
||||
@@ -101,8 +102,9 @@ class IsDescendantFamilyOf(Rule):
|
||||
self.matches.remove(self.root_person.handle)
|
||||
for family_handle in self.root_person.get_family_handle_list():
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if self.root_person.handle == family.get_father_handle():
|
||||
spouse_handle = family.get_mother_handle()
|
||||
else:
|
||||
spouse_handle = family.get_father_handle()
|
||||
self.matches.remove(spouse_handle)
|
||||
if family:
|
||||
if self.root_person.handle == family.get_father_handle():
|
||||
spouse_handle = family.get_mother_handle()
|
||||
else:
|
||||
spouse_handle = family.get_father_handle()
|
||||
self.matches.remove(spouse_handle)
|
||||
|
||||
@@ -40,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsDescendantOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsDescendantOfFilterMatch(IsDescendantOf,MatchesFilter):
|
||||
class IsDescendantOfFilterMatch(IsDescendantOf):
|
||||
"""Rule that checks for a person that is a descendant
|
||||
of someone matched by a filter"""
|
||||
|
||||
@@ -66,11 +66,11 @@ class IsDescendantOfFilterMatch(IsDescendantOf,MatchesFilter):
|
||||
first = 1
|
||||
|
||||
filt = MatchesFilter(self.list[0:1])
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for person in db.iter_people():
|
||||
if filt.apply(db, person):
|
||||
self.init_list(person, first)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
def reset(self):
|
||||
self.map.clear()
|
||||
|
||||
@@ -75,6 +75,7 @@ class IsLessThanNthGenerationDescendantOf(Rule):
|
||||
|
||||
for fam_id in person.get_family_handle_list():
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
for child_ref in fam.get_child_ref_list():
|
||||
self.init_list(
|
||||
self.db.get_person_from_handle(child_ref.ref), gen+1)
|
||||
if fam:
|
||||
for child_ref in fam.get_child_ref_list():
|
||||
self.init_list(
|
||||
self.db.get_person_from_handle(child_ref.ref), gen+1)
|
||||
|
||||
@@ -73,6 +73,7 @@ class IsMoreThanNthGenerationDescendantOf(Rule):
|
||||
|
||||
for fam_id in person.get_family_handle_list():
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
for child_ref in fam.get_child_ref_list():
|
||||
self.init_list(
|
||||
self.db.get_person_from_handle(child_ref.ref), gen+1)
|
||||
if fam:
|
||||
for child_ref in fam.get_child_ref_list():
|
||||
self.init_list(
|
||||
self.db.get_person_from_handle(child_ref.ref), gen+1)
|
||||
|
||||
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsParentOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsParentOfFilterMatch(MatchesFilter):
|
||||
class IsParentOfFilterMatch(Rule):
|
||||
"""Rule that checks for a person that is a parent
|
||||
of someone matched by a filter"""
|
||||
|
||||
@@ -52,11 +53,11 @@ class IsParentOfFilterMatch(MatchesFilter):
|
||||
self.db = db
|
||||
self.map = set()
|
||||
filt = MatchesFilter(self.list)
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for person in db.iter_people():
|
||||
if filt.apply(db, person):
|
||||
self.init_list(person)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
def reset(self):
|
||||
self.map.clear()
|
||||
@@ -67,6 +68,9 @@ class IsParentOfFilterMatch(MatchesFilter):
|
||||
def init_list(self,person):
|
||||
for fam_id in person.get_parent_family_handle_list():
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
self.map.update(parent_id
|
||||
for parent_id in [fam.get_father_handle(), fam.get_mother_handle()]
|
||||
if parent_id)
|
||||
if fam:
|
||||
self.map.update(parent_id
|
||||
for parent_id in [fam.get_father_handle(),
|
||||
fam.get_mother_handle()]
|
||||
if parent_id)
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsSiblingOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsSiblingOfFilterMatch(MatchesFilter):
|
||||
class IsSiblingOfFilterMatch(Rule):
|
||||
"""Rule that checks for siblings of someone matched by a filter"""
|
||||
|
||||
labels = [ _('Filter name:') ]
|
||||
@@ -51,11 +52,11 @@ class IsSiblingOfFilterMatch(MatchesFilter):
|
||||
self.db = db
|
||||
self.map = set()
|
||||
filt = MatchesFilter(self.list)
|
||||
filt.prepare(db)
|
||||
filt.requestprepare(db)
|
||||
for person in db.iter_people():
|
||||
if filt.apply (db, person):
|
||||
self.init_list (person)
|
||||
filt.reset()
|
||||
filt.requestreset()
|
||||
|
||||
def reset(self):
|
||||
self.map.clear()
|
||||
@@ -71,4 +72,4 @@ class IsSiblingOfFilterMatch(MatchesFilter):
|
||||
if fam:
|
||||
self.map.update(child_ref.ref
|
||||
for child_ref in fam.get_child_ref_list()
|
||||
if child_ref.ref != person.handle)
|
||||
if child_ref and child_ref.ref != person.handle)
|
||||
|
||||
@@ -32,6 +32,7 @@ from gen.ggettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules import Rule
|
||||
from _MatchesFilter import MatchesFilter
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -39,7 +40,7 @@ from _MatchesFilter import MatchesFilter
|
||||
# IsSpouseOfFilterMatch
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class IsSpouseOfFilterMatch(MatchesFilter):
|
||||
class IsSpouseOfFilterMatch(Rule):
|
||||
"""Rule that checks for a person married to someone matching
|
||||
a filter"""
|
||||
|
||||
@@ -50,16 +51,21 @@ class IsSpouseOfFilterMatch(MatchesFilter):
|
||||
|
||||
def prepare(self,db):
|
||||
self.filt = MatchesFilter (self.list)
|
||||
self.filt.prepare(db)
|
||||
self.filt.requestprepare(db)
|
||||
|
||||
def apply(self,db,person):
|
||||
for family_handle in person.get_family_handle_list ():
|
||||
family = db.get_family_from_handle(family_handle)
|
||||
for spouse_id in [family.get_father_handle (), family.get_mother_handle ()]:
|
||||
if not spouse_id:
|
||||
continue
|
||||
if spouse_id == person.handle:
|
||||
continue
|
||||
if self.filt.apply (db, db.get_person_from_handle( spouse_id)):
|
||||
return True
|
||||
if family:
|
||||
for spouse_id in [family.get_father_handle(),
|
||||
family.get_mother_handle()]:
|
||||
if not spouse_id:
|
||||
continue
|
||||
if spouse_id == person.handle:
|
||||
continue
|
||||
if self.filt.apply (db, db.get_person_from_handle( spouse_id)):
|
||||
return True
|
||||
return False
|
||||
|
||||
def reset(self):
|
||||
self.filt.requestreset()
|
||||
|
||||
@@ -48,7 +48,7 @@ class IsWitness(Rule):
|
||||
|
||||
def apply(self,db,person):
|
||||
for event_ref in person.event_ref_list:
|
||||
if event_ref.role == EventRoleType.WITNESS:
|
||||
if event_ref and event_ref.role == EventRoleType.WITNESS:
|
||||
# This is the witness.
|
||||
# If event type was given, then check it.
|
||||
if self.list[0]:
|
||||
|
||||
@@ -53,10 +53,11 @@ class MissingParent(Rule):
|
||||
return True
|
||||
for family_handle in person.get_parent_family_handle_list():
|
||||
family = db.get_family_from_handle(family_handle)
|
||||
father_handle = family.get_father_handle()
|
||||
mother_handle = family.get_mother_handle()
|
||||
if not father_handle:
|
||||
return True
|
||||
if not mother_handle:
|
||||
return True
|
||||
if family:
|
||||
father_handle = family.get_father_handle()
|
||||
mother_handle = family.get_mother_handle()
|
||||
if not father_handle:
|
||||
return True
|
||||
if not mother_handle:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
# Copyright (C) 2010 Raphael Ackermann
|
||||
#
|
||||
# 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
|
||||
@@ -40,7 +41,7 @@ from Filters.Rules import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasGrampsId(Rule):
|
||||
"""Rule that checks for a person with a specific GRAMPS ID."""
|
||||
"""Rule that checks for an object with a specific GRAMPS ID."""
|
||||
|
||||
labels = [ _('ID:') ]
|
||||
name = _('Object with <Id>')
|
||||
@@ -48,4 +49,8 @@ class HasGrampsId(Rule):
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self, db, obj):
|
||||
return obj.gramps_id.find(self.list[0]) !=-1
|
||||
"""
|
||||
apply the rule on the obj.
|
||||
return true if the rule passes, false otherwise.
|
||||
"""
|
||||
return obj.gramps_id == self.list[0]
|
||||
|
||||
@@ -59,7 +59,7 @@ class HasNoteRegexBase(Rule):
|
||||
notelist = person.get_note_list()
|
||||
for notehandle in notelist:
|
||||
note = db.get_note_from_handle(notehandle)
|
||||
n = unicode(note.get())
|
||||
n = note.get()
|
||||
if self.match.match(n) is not None:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -50,7 +50,7 @@ class HasNoteSubstrBase(Rule):
|
||||
notelist = person.get_note_list()
|
||||
for notehandle in notelist:
|
||||
note = db.get_note_from_handle(notehandle)
|
||||
n = unicode(note.get())
|
||||
n = note.get()
|
||||
if n.upper().find(self.list[0].upper()) != -1:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -55,34 +55,22 @@ class MatchesFilterBase(Rule):
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self, db):
|
||||
#if Filters.SystemFilters:
|
||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
#if filt.get_name() == self.list[0]:
|
||||
#for rule in filt.flist:
|
||||
#rule.prepare(db)
|
||||
if Filters.CustomFilters:
|
||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
for rule in filt.flist:
|
||||
rule.prepare(db)
|
||||
rule.requestprepare(db)
|
||||
break
|
||||
|
||||
def reset(self):
|
||||
#if Filters.SystemFilters:
|
||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
#if filt.get_name() == self.list[0]:
|
||||
#for rule in filt.flist:
|
||||
#rule.reset()
|
||||
if Filters.CustomFilters:
|
||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
for rule in filt.flist:
|
||||
rule.reset()
|
||||
rule.requestreset()
|
||||
break
|
||||
|
||||
def apply(self, db, obj):
|
||||
#if Filters.SystemFilters:
|
||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
#if filt.get_name() == self.list[0]:
|
||||
#return filt.check(db, obj.handle)
|
||||
if Filters.CustomFilters:
|
||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
@@ -93,10 +81,6 @@ class MatchesFilterBase(Rule):
|
||||
"""
|
||||
Return the selected filter or None.
|
||||
"""
|
||||
#if Filters.SystemFilters:
|
||||
#for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
#if filt.get_name() == self.list[0]:
|
||||
#return filt
|
||||
if Filters.CustomFilters:
|
||||
for filt in Filters.CustomFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
|
||||
@@ -43,14 +43,47 @@ class Rule(object):
|
||||
|
||||
def __init__(self, arg):
|
||||
self.set_list(arg)
|
||||
self.nrprepare = 0
|
||||
|
||||
def is_empty(self):
|
||||
return False
|
||||
|
||||
def requestprepare(self, db):
|
||||
"""
|
||||
Request that the prepare method of the rule is executed if needed
|
||||
|
||||
Special: Custom Filters have fixed values, so only one instance needs to
|
||||
exists during a search. It is stored in a FilterStore, and initialized
|
||||
once.
|
||||
As filters are can be grouped in a group
|
||||
filter, we request a prepare. Only the first time prepare will be
|
||||
called
|
||||
"""
|
||||
if self.nrprepare == 0:
|
||||
self.prepare(db)
|
||||
self.nrprepare += 1
|
||||
|
||||
def prepare(self, db):
|
||||
"""prepare so the rule can be executed efficiently"""
|
||||
pass
|
||||
|
||||
def requestreset(self):
|
||||
"""
|
||||
Request that the reset method of the rule is executed if possible
|
||||
|
||||
Special: Custom Filters have fixed values, so only one instance needs to
|
||||
exists during a search. It is stored in a FilterStore, and initialized
|
||||
once.
|
||||
As filters are can be grouped in a group
|
||||
filter, we request a reset. Only the last time reset will be
|
||||
called
|
||||
"""
|
||||
self.nrprepare -= 1
|
||||
if self.nrprepare == 0:
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
"""remove no longer needed memory"""
|
||||
pass
|
||||
|
||||
def set_list(self, arg):
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#-------------------------------------------------------------------------
|
||||
from xml.sax import make_parser, SAXParseException
|
||||
import os
|
||||
import sys
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -84,8 +85,7 @@ class FilterList(object):
|
||||
return l.replace('"', '"')
|
||||
|
||||
def save(self):
|
||||
f = open(self.file.encode('utf-8'), 'w')
|
||||
|
||||
f = open(self.file.encode(sys.getfilesystemencoding()), 'w')
|
||||
f.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
f.write('<filters>\n')
|
||||
for namespace in self.filter_namespaces:
|
||||
|
||||
@@ -227,10 +227,10 @@ class GenericFilter(object):
|
||||
"""
|
||||
m = self.get_check_func()
|
||||
for rule in self.flist:
|
||||
rule.prepare(db)
|
||||
rule.requestprepare(db)
|
||||
res = m(db, id_list, progress, tupleind)
|
||||
for rule in self.flist:
|
||||
rule.reset()
|
||||
rule.requestreset()
|
||||
return res
|
||||
|
||||
class GenericFamilyFilter(GenericFilter):
|
||||
|
||||
@@ -30,6 +30,7 @@ Package providing filtering framework for GRAMPS.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters._GenericFilter import GenericFilter
|
||||
from Errors import FilterError
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -58,8 +59,11 @@ class ParamFilter(GenericFilter):
|
||||
new_list[ix] = self.param_list[ix]
|
||||
rule.set_list(new_list)
|
||||
for rule in self.flist:
|
||||
rule.prepare(db)
|
||||
if rule.nrprepare > 0:
|
||||
raise FilterError, 'Custom filters can not twice be used' \
|
||||
' in a parameter filter'
|
||||
rule.requestprepare(db)
|
||||
result = GenericFilter.apply(self, db, id_list)
|
||||
for rule in self.flist:
|
||||
rule.reset()
|
||||
rule.requestreset()
|
||||
return result
|
||||
|
||||
@@ -124,7 +124,7 @@ class GrampsAboutDialog(gtk.AboutDialog):
|
||||
"Distribution: %s")
|
||||
% (elipses(str(const.VERSION)),
|
||||
elipses(str(sys.version).replace('\n','')),
|
||||
elipses(str(bsddb.__version__)),
|
||||
elipses(str(bsddb.__version__) + " " + str(bsddb.db.version())),
|
||||
elipses(os.environ.get('LANG','')),
|
||||
elipses(operatingsystem),
|
||||
elipses(distribution)))
|
||||
|
||||
@@ -119,7 +119,7 @@ class ErrorReportAssistant(object):
|
||||
"gobject version: %s\n"\
|
||||
"cairo version : %s"\
|
||||
% (str(sys.version).replace('\n',''),
|
||||
str(bsddb.__version__),
|
||||
str(bsddb.__version__) + " " + str(bsddb.db.version()),
|
||||
str(const.VERSION),
|
||||
os.environ.get('LANG',''),
|
||||
operatingsystem,
|
||||
|
||||
@@ -38,6 +38,13 @@ import tempfile
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import Utils
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# resize_to_jpeg
|
||||
@@ -111,6 +118,7 @@ def resize_to_jpeg_buffer(source, width, height):
|
||||
img = gtk.gdk.pixbuf_new_from_file(source)
|
||||
scaled = img.scale_simple(int(width), int(height), gtk.gdk.INTERP_BILINEAR)
|
||||
os.close(filed)
|
||||
dest = Utils.get_unicode_path_from_env_var(dest)
|
||||
scaled.save(dest, 'jpeg')
|
||||
ofile = open(dest, mode='rb')
|
||||
data = ofile.read()
|
||||
|
||||
@@ -437,8 +437,8 @@ class ManagedWindow(object):
|
||||
if object is not None:
|
||||
return object
|
||||
raise ValueError, (
|
||||
'ManagedWindow.get_widget: "%s" widget not found in "%s"' %
|
||||
(name, self._gladeobj.get_name())
|
||||
'ManagedWindow.get_widget: "%s" widget not found in "%s/%s"' %
|
||||
(name, self._gladeobj.dirname, self._gladeobj.filename)
|
||||
)
|
||||
return object
|
||||
|
||||
|
||||
@@ -700,9 +700,7 @@ class GuiNoteOption(gtk.HBox):
|
||||
"""
|
||||
if note:
|
||||
note_id = note.get_gramps_id()
|
||||
txt = " ".join(note.get().split())
|
||||
#String must be unicode for truncation to work for non ascii characters
|
||||
txt = unicode(txt)
|
||||
txt = u" ".join(note.get().split())
|
||||
if len(txt) > 35:
|
||||
txt = txt[:35] + "..."
|
||||
txt = "%s [%s]" % (txt, note_id)
|
||||
@@ -1277,7 +1275,7 @@ class GuiDestinationOption(gtk.HBox):
|
||||
|
||||
status = fcd.run()
|
||||
if status == gtk.RESPONSE_OK:
|
||||
path = Utils.get_unicode_path(fcd.get_filename())
|
||||
path = Utils.get_unicode_path_from_file_chooser(fcd.get_filename())
|
||||
if path:
|
||||
if not self.__option.get_directory_entry() and \
|
||||
not path.endswith(self.__option.get_extension()):
|
||||
|
||||
@@ -601,7 +601,7 @@ class PluginStatus(ManagedWindow.ManagedWindow):
|
||||
# But don't use converted filenames
|
||||
# in the call to self.__pmgr.reg_plugins
|
||||
# as that will break in reg_plugins.
|
||||
u_gpr_file = unicode(gpr_file, sys.getfilesystemencoding())
|
||||
u_gpr_file = Utils.get_unicode_path_from_file_chooser(gpr_file)
|
||||
callback(" " + (_("Registered '%s'") % u_gpr_file) + "\n")
|
||||
self.__pmgr.reg_plugins(gpr_file)
|
||||
|
||||
@@ -629,7 +629,7 @@ class PluginStatus(ManagedWindow.ManagedWindow):
|
||||
|
||||
status = fcd.run()
|
||||
if status == gtk.RESPONSE_OK:
|
||||
path = Utils.get_unicode_path(fcd.get_filename())
|
||||
path = Utils.get_unicode_path_from_file_chooser(fcd.get_filename())
|
||||
if path:
|
||||
self.install_addon_path.set_text(path)
|
||||
fcd.destroy()
|
||||
|
||||
+3
-2
@@ -1330,6 +1330,7 @@ class RelationshipCalculator(object):
|
||||
all_dist=True,
|
||||
all_families=True, only_birth=False)
|
||||
if not data[0][0] == -1:
|
||||
data = self.collapse_relations(data)
|
||||
for rel in data :
|
||||
rel2 = rel[2]
|
||||
rel4 = rel[4]
|
||||
@@ -1360,13 +1361,13 @@ class RelationshipCalculator(object):
|
||||
if not rel_str in relstrings:
|
||||
relstrings.append(rel_str)
|
||||
if rel1:
|
||||
commons[rel_str] = [rel1]
|
||||
commons[rel_str] = rel1
|
||||
else:
|
||||
#unknown parent eg
|
||||
commons[rel_str] = []
|
||||
else:
|
||||
if rel1:
|
||||
commons[rel_str].append(rel1)
|
||||
commons[rel_str].extend(rel1)
|
||||
#construct the return tupply, relstrings is ordered on rank automatic
|
||||
common_list = []
|
||||
for rel_str in relstrings:
|
||||
|
||||
@@ -73,7 +73,7 @@ class FileEntry(gtk.HBox):
|
||||
dialog.present()
|
||||
status = dialog.run()
|
||||
if status == gtk.RESPONSE_OK:
|
||||
self.set_filename(Utils.get_unicode_path(dialog.get_filename()))
|
||||
self.set_filename(Utils.get_unicode_path_from_file_chooser(dialog.get_filename()))
|
||||
dialog.destroy()
|
||||
|
||||
def set_filename(self, path):
|
||||
|
||||
@@ -34,6 +34,8 @@ import threading
|
||||
import time
|
||||
from types import ClassType, InstanceType
|
||||
from gen.ggettext import gettext as _
|
||||
from subprocess import Popen, PIPE
|
||||
import sys
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
@@ -446,7 +448,16 @@ class GVPsDoc(GVDocBase):
|
||||
# but the output is clipped, some margins have disappeared. I used 1 inch margins always.
|
||||
# See bug tracker issue 2815
|
||||
|
||||
os.system( 'dot -Tps:cairo -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
command = 'dot -Tps:cairo -o"%s" "%s"' % (fname, tmp_dot)
|
||||
dotversion = Popen(['dot', '-V'], stderr=PIPE).communicate(input=None)[1]
|
||||
# Problem with dot 2.26.3 and multiple pages, which gives "cairo: out of memory"
|
||||
# If the :cairo is skipped for these cases it gives acceptable result.
|
||||
if dotversion.find('2.26.3') != -1 and (self.vpages * self.hpages) > 1:
|
||||
command=command.replace(':cairo','')
|
||||
os.system(command)
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
|
||||
@@ -489,9 +500,11 @@ class GVSvgDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
# Generate the SVG file.
|
||||
os.system( 'dot -Tsvg -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
os.system( 'dot -Tsvg -o"%s" "%s"' % (fname, tmp_dot) )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
@@ -535,9 +548,11 @@ class GVSvgzDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
# Generate the SVGZ file.
|
||||
os.system( 'dot -Tsvgz -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
os.system( 'dot -Tsvgz -o"%s" "%s"' % (fname, tmp_dot) )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
@@ -581,9 +596,11 @@ class GVPngDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
# Generate the PNG file.
|
||||
os.system( 'dot -Tpng -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
os.system( 'dot -Tpng -o"%s" "%s"' % (fname, tmp_dot) )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
@@ -627,9 +644,11 @@ class GVJpegDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
# Generate the JPEG file.
|
||||
os.system( 'dot -Tjpg -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
os.system( 'dot -Tjpg -o"%s" "%s"' % (fname, tmp_dot) )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
@@ -673,9 +692,11 @@ class GVGifDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
|
||||
# Generate the GIF file.
|
||||
os.system( 'dot -Tgif -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
os.system( 'dot -Tgif -o"%s" "%s"' % (fname, tmp_dot) )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
@@ -722,13 +743,16 @@ class GVPdfGvDoc(GVDocBase):
|
||||
dotfile = os.fdopen(handle,"w")
|
||||
dotfile.write(self._dot.getvalue())
|
||||
dotfile.close()
|
||||
|
||||
# Covert filename to str using file system encoding.
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
# Generate the PDF file.
|
||||
os.system( 'dot -Tpdf -o"%s" "%s"' % (self._filename, tmp_dot) )
|
||||
|
||||
command = 'dot -Tpdf -o"%s" "%s"' % (fname, tmp_dot)
|
||||
|
||||
os.system( command )
|
||||
|
||||
# Delete the temporary dot file
|
||||
os.remove(tmp_dot)
|
||||
|
||||
|
||||
if self.open_req:
|
||||
open_file_with_default_application(self._filename)
|
||||
|
||||
@@ -775,6 +799,11 @@ class GVPdfGsDoc(GVDocBase):
|
||||
# Reason for using -Tps:cairo. Needed for Non Latin-1 letters
|
||||
# See bug tracker issue 2815
|
||||
command = 'dot -Tps:cairo -o"%s" "%s"' % ( tmp_ps, tmp_dot )
|
||||
dotversion = Popen(['dot', '-V'], stderr=PIPE).communicate(input=None)[1]
|
||||
# Problem with dot 2.26.3 and multiple pages, which gives "cairo: out of memory"
|
||||
# If the :cairo is skipped for these cases it gives acceptable result.
|
||||
if dotversion.find('2.26.3') != -1 and (self.vpages * self.hpages) > 1:
|
||||
command=command.replace(':cairo','')
|
||||
os.system(command)
|
||||
|
||||
# Add .5 to remove rounding errors.
|
||||
@@ -783,9 +812,11 @@ class GVPdfGsDoc(GVDocBase):
|
||||
height_pt = int( (paper_size.get_height_inches() * 72) + 0.5 )
|
||||
|
||||
# Convert to PDF using ghostscript
|
||||
fname = self._filename.encode(sys.getfilesystemencoding())
|
||||
command = '%s -q -sDEVICE=pdfwrite -dNOPAUSE -dDEVICEWIDTHPOINTS=%d' \
|
||||
' -dDEVICEHEIGHTPOINTS=%d -sOutputFile="%s" "%s" -c quit' \
|
||||
% ( _GS_CMD, width_pt, height_pt, self._filename, tmp_ps )
|
||||
% ( _GS_CMD, width_pt, height_pt, fname, tmp_ps )
|
||||
|
||||
os.system(command)
|
||||
|
||||
os.remove(tmp_ps)
|
||||
|
||||
@@ -57,6 +57,7 @@ from _StyleComboBox import StyleComboBox
|
||||
from _StyleEditor import StyleListDisplay
|
||||
from _FileEntry import FileEntry
|
||||
from const import URL_MANUAL_PAGE
|
||||
import Utils
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -466,7 +467,7 @@ class ReportDialog(ManagedWindow.ManagedWindow):
|
||||
to tell the calling routine to give up. This function also
|
||||
saves the current directory so that any future reports will
|
||||
default to the most recently used directory."""
|
||||
self.target_path = self.target_fileentry.get_full_path(0)
|
||||
self.target_path = Utils.get_unicode_path_from_file_chooser(self.target_fileentry.get_full_path(0))
|
||||
if not self.target_path:
|
||||
return None
|
||||
|
||||
|
||||
+10
-5
@@ -71,7 +71,8 @@ class SubstKeywords(object):
|
||||
person = database.get_person_from_handle(person_handle)
|
||||
self.n = person.get_primary_name().get_first_name() + " " + \
|
||||
person.get_primary_name().get_surname() #Issue ID: 2878
|
||||
self.N = name_displayer.sorted(person)
|
||||
self.N = person.get_primary_name().get_surname() + ", " + \
|
||||
person.get_primary_name().get_first_name()
|
||||
self.b = ""
|
||||
self.B = ""
|
||||
self.d = ""
|
||||
@@ -103,13 +104,17 @@ class SubstKeywords(object):
|
||||
if father_handle == person_handle:
|
||||
if mother_handle:
|
||||
mother = database.get_person_from_handle(mother_handle)
|
||||
self.s = name_displayer.display(mother)
|
||||
self.S = name_displayer.sorted(mother)
|
||||
self.s = mother.get_primary_name().get_first_name() + " " + \
|
||||
mother.get_primary_name().get_surname() #Issue ID: 2878
|
||||
self.S = mother.get_primary_name().get_surname() + ", " + \
|
||||
mother.get_primary_name().get_first_name()
|
||||
else:
|
||||
if father_handle:
|
||||
father = database.get_person_from_handle(father_handle)
|
||||
self.s = name_displayer.display(father)
|
||||
self.S = name_displayer.sorted(father)
|
||||
self.s = father.get_primary_name().get_first_name() + " " + \
|
||||
father.get_primary_name().get_surname() #Issue ID: 2878
|
||||
self.S = father.get_primary_name().get_surname() + ", " + \
|
||||
father.get_primary_name().get_first_name()
|
||||
for e_ref in f.get_event_ref_list():
|
||||
if not e_ref:
|
||||
continue
|
||||
|
||||
@@ -226,6 +226,11 @@ def get_addon_translator(filename=None, domain="addon"):
|
||||
gramps_translator = gettext.translation(LOCALEDOMAIN, LOCALEDIR,
|
||||
fallback=True)
|
||||
path = os.path.dirname(os.path.abspath(filename))
|
||||
# Check if path is of type str. Do import and conversion if so.
|
||||
# The import cannot be done at the top as that will conflict with the translation system.
|
||||
if type(path) == str:
|
||||
from Utils import get_unicode_path_from_env_var
|
||||
path = get_unicode_path_from_env_var(path)
|
||||
addon_translator = gettext.translation(domain, os.path.join(path,"locale"),
|
||||
fallback=True)
|
||||
gramps_translator.add_fallback(addon_translator)
|
||||
|
||||
+8
-6
@@ -133,14 +133,16 @@ class UndoHistory(ManagedWindow.ManagedWindow):
|
||||
|
||||
def _paint_rows(self,start,end,selected=False):
|
||||
if selected:
|
||||
(fg,bg) = get_colors(self.tree,gtk.STATE_SELECTED)
|
||||
(fg, bg) = get_colors(self.tree,gtk.STATE_SELECTED)
|
||||
else:
|
||||
fg = bg = None
|
||||
|
||||
for idx in range(start,end+1):
|
||||
the_iter = self.model.get_iter( (idx,) )
|
||||
self.model.set(the_iter,2,fg)
|
||||
self.model.set(the_iter,3,bg)
|
||||
try:
|
||||
the_iter = self.model.get_iter( (idx,) )
|
||||
self.model.set(the_iter, 2, fg)
|
||||
self.model.set(the_iter, 3, bg)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
def _response(self, obj,response_id):
|
||||
if response_id == gtk.RESPONSE_CLOSE:
|
||||
@@ -182,7 +184,7 @@ class UndoHistory(ManagedWindow.ManagedWindow):
|
||||
|
||||
def clear(self):
|
||||
self.undodb.clear()
|
||||
self.undodb.abort_possible = False
|
||||
self.db.abort_possible = False
|
||||
self.update()
|
||||
if self.db.undo_callback:
|
||||
self.db.undo_callback(None)
|
||||
|
||||
+51
-35
@@ -37,6 +37,8 @@ import random
|
||||
import time
|
||||
import shutil
|
||||
import uuid
|
||||
import logging
|
||||
LOG = logging.getLogger(".")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -322,20 +324,59 @@ def find_folder( filename):
|
||||
# not found
|
||||
return ''
|
||||
|
||||
def get_unicode_path(path):
|
||||
def get_unicode_path_from_file_chooser(path):
|
||||
"""
|
||||
Return the Unicode version of a path string.
|
||||
|
||||
:type path: str
|
||||
:param path: The path to be converted to Unicode
|
||||
:rtype: unicode
|
||||
:returns: The Unicode version of path.
|
||||
:returns: The Unicode version of path.
|
||||
"""
|
||||
# Don't make unicode of unicode as this does not work
|
||||
# with parameter for encoding.
|
||||
if type(path) == type(u""):
|
||||
# Don't make unicode of unicode
|
||||
if isinstance(path, unicode):
|
||||
return path
|
||||
return unicode(path, sys.getfilesystemencoding())
|
||||
|
||||
if constfunc.win():
|
||||
# in windows filechooser returns officially utf-8, not filesystemencoding
|
||||
try:
|
||||
return unicode(path)
|
||||
except:
|
||||
LOG.warn("Problem encountered converting string: %s." % path)
|
||||
return unicode(path, sys.getfilesystemencoding(), errors='replace')
|
||||
else:
|
||||
try:
|
||||
return unicode(path, sys.getfilesystemencoding())
|
||||
except:
|
||||
LOG.warn("Problem encountered converting string: %s." % path)
|
||||
return unicode(path, sys.getfilesystemencoding(), errors='replace')
|
||||
|
||||
def get_unicode_path_from_env_var(path):
|
||||
"""
|
||||
Return the Unicode version of a path string.
|
||||
|
||||
:type path: str
|
||||
:param path: The path to be converted to Unicode
|
||||
:rtype: unicode
|
||||
:returns: The Unicode version of path.
|
||||
"""
|
||||
if isinstance(path, unicode):
|
||||
return path
|
||||
|
||||
if constfunc.win():
|
||||
# In Windows path/filename returned from a emvironment variable is in filesystemencoding
|
||||
try:
|
||||
new_path = unicode(path, sys.getfilesystemencoding())
|
||||
return new_path
|
||||
except:
|
||||
LOG.warn("Problem encountered converting string: %s." % path)
|
||||
return unicode(path, sys.getfilesystemencoding(), errors='replace')
|
||||
else:
|
||||
try:
|
||||
return unicode(path)
|
||||
except:
|
||||
LOG.warn("Problem encountered converting string: %s." % path)
|
||||
return unicode(path, sys.getfilesystemencoding(), errors='replace')
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -823,35 +864,9 @@ def probably_alive(person, db,
|
||||
if not birth or not death:
|
||||
# no evidence, must consider alive
|
||||
return (True, None, None, _("no evidence"), None)
|
||||
# must have est dates from here:
|
||||
# SPECIAL CASE: Today and Future:
|
||||
if current_date.match(gen.lib.date.Today(), ">="):
|
||||
if person.get_death_ref():
|
||||
# if death in the future: (impossible, unless guess)
|
||||
# if return_range:
|
||||
# return (True, birth, death, ("future death, ") + explain, relative)
|
||||
# else:
|
||||
# return True
|
||||
if return_range:
|
||||
return (False, birth, death, explain, relative)
|
||||
else:
|
||||
return False
|
||||
# must have dates from here:
|
||||
if limit:
|
||||
death += limit # add these years to death
|
||||
# if the current - birth is too big, not alive:
|
||||
# FIXME: use match here:
|
||||
if (current_date - birth)[0] > pb.MAX_AGE_PROB_ALIVE:
|
||||
if return_range:
|
||||
return (False, birth, death, explain, relative)
|
||||
else:
|
||||
return False
|
||||
# FIXME: use match here:
|
||||
# if the current_date is before birth, not alive:
|
||||
if (birth - current_date)[0] > 0:
|
||||
if return_range:
|
||||
return (False, birth, death, explain, relative)
|
||||
else:
|
||||
return False
|
||||
# Finally, check to see if current_date is between dates
|
||||
result = (current_date.match(birth, ">=") and
|
||||
current_date.match(death, "<="))
|
||||
@@ -956,6 +971,7 @@ def get_empty_tempdir(dirname):
|
||||
if os.path.isdir(dirpath):
|
||||
shutil.rmtree(dirpath)
|
||||
os.makedirs(dirpath)
|
||||
dirpath = get_unicode_path_from_env_var(dirpath)
|
||||
return dirpath
|
||||
|
||||
def rm_tempdir(path):
|
||||
@@ -1351,10 +1367,10 @@ def navigation_label(db, nav_type, handle):
|
||||
obj = db.get_note_from_handle(handle)
|
||||
if obj:
|
||||
label = obj.get()
|
||||
label = " ".join(label.split())
|
||||
# When strings are cut, make sure they are unicode
|
||||
#otherwise you may end of with cutting within an utf-8 sequence
|
||||
label = get_unicode_path(label)
|
||||
label = unicode(label)
|
||||
label = " ".join(label.split())
|
||||
if len(label) > 40:
|
||||
label = label[:40] + "..."
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ class ArgHandler(object):
|
||||
if self.list:
|
||||
print 'List of known family trees in your database path\n'
|
||||
for name, dirname in self.dbman.family_tree_list():
|
||||
print dirname, ', with name ', name
|
||||
print dirname, ', with name ', name.encode(sys.getfilesystemencoding())
|
||||
sys.exit(0)
|
||||
|
||||
if self.list_more:
|
||||
|
||||
+5
-2
@@ -156,7 +156,7 @@ class CLIDbManager(object):
|
||||
else:
|
||||
retval["Locked?"] = "no"
|
||||
retval["DB version"] = version
|
||||
retval["Family tree"] = name
|
||||
retval["Family tree"] = name.encode(sys.getfilesystemencoding())
|
||||
retval["Path"] = dirpath
|
||||
retval["Last accessed"] = time.strftime('%x %X',
|
||||
time.localtime(tval))
|
||||
@@ -168,6 +168,7 @@ class CLIDbManager(object):
|
||||
"""
|
||||
# make the default directory if it does not exist
|
||||
dbdir = os.path.expanduser(config.get('behavior.database-path'))
|
||||
dbdir = dbdir.encode(sys.getfilesystemencoding())
|
||||
make_dbdir(dbdir)
|
||||
|
||||
self.current_names = []
|
||||
@@ -331,7 +332,8 @@ def make_dbdir(dbdir):
|
||||
if not os.path.isdir(dbdir):
|
||||
os.makedirs(dbdir)
|
||||
except (IOError, OSError), msg:
|
||||
LOG.error(_("Could not make database directory: ") + str(msg))
|
||||
msg = unicode(str(msg), sys.getfilesystemencoding())
|
||||
LOG.error(_("Could not make database directory: ") + msg)
|
||||
|
||||
def find_next_db_name(name_list):
|
||||
"""
|
||||
@@ -354,6 +356,7 @@ def find_next_db_dir():
|
||||
while True:
|
||||
base = "%x" % int(time.time())
|
||||
dbdir = os.path.expanduser(config.get('behavior.database-path'))
|
||||
dbdir = dbdir.encode(sys.getfilesystemencoding())
|
||||
new_path = os.path.join(dbdir, base)
|
||||
if not os.path.isdir(new_path):
|
||||
break
|
||||
|
||||
+3
-6
@@ -42,10 +42,10 @@ from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
PROGRAM_NAME = "Gramps"
|
||||
if "@VERSIONSTRING@" == "@" + "VERSIONSTRING" + "@":
|
||||
VERSION = "3.2.2"
|
||||
VERSION = "3.2.4"
|
||||
else:
|
||||
VERSION = "@VERSIONSTRING@"
|
||||
VERSION_TUPLE = (3, 2, 2)
|
||||
VERSION_TUPLE = (3, 2, 4)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -117,10 +117,7 @@ else:
|
||||
# Conversion of USER_HOME to unicode was needed to have better
|
||||
# support for non ASCII path names in Windows for the Gramps database.
|
||||
USER_HOME = unicode(USER_HOME, sys.getfilesystemencoding())
|
||||
|
||||
# Tried also coversion of HOME_DIR, but that caused a lot of problems
|
||||
# in Windows. Leave it unconverted for now.
|
||||
#HOME_DIR = unicode(HOME_DIR, sys.getfilesystemencoding())
|
||||
HOME_DIR = unicode(HOME_DIR, sys.getfilesystemencoding())
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
+151
-496
@@ -1,32 +1,38 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Ash Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
--------------------------------------------------------------------------------------------------
|
||||
@@ -39,17 +45,19 @@ gray very light #EEE
|
||||
white #FFF
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
# $Id $
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------ */
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
/* General Elements
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
|
||||
body {
|
||||
font-family:sans-serif;
|
||||
color:#000;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
div {
|
||||
@@ -155,7 +163,7 @@ a:visited {
|
||||
|
||||
/* Header
|
||||
----------------------------------------------------- */
|
||||
div#header {
|
||||
#header {
|
||||
padding:15px 15px 2px 15px;
|
||||
margin:0;
|
||||
background-color:#EEE;
|
||||
@@ -164,73 +172,21 @@ div#header {
|
||||
color:#333;
|
||||
margin:0 0 3px 0;
|
||||
}
|
||||
div#header p {
|
||||
#header p {
|
||||
font-size:1em;
|
||||
font-weight:bold;
|
||||
color:#999;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
div#footer {
|
||||
height: 60px;
|
||||
clear:both;
|
||||
width:100%;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#333;
|
||||
margin:0;
|
||||
padding:15px 0 0 0;
|
||||
background-color:#CCC;
|
||||
border-top:solid 1px #333;
|
||||
}
|
||||
div#footer a, div#footer a:visited {
|
||||
text-decoration:none;
|
||||
color:#333;
|
||||
}
|
||||
div#footer a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
div#footer img {
|
||||
border:0;
|
||||
margin:0 auto;
|
||||
vertical-align:middle;
|
||||
}
|
||||
div#footer p#createdate {
|
||||
float:left;
|
||||
width:40%;
|
||||
text-align:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
div#footer p#copyright {
|
||||
float:right;
|
||||
width:40%;
|
||||
text-align:right;
|
||||
margin-right:10px;
|
||||
}
|
||||
div#footer p#copyright img {
|
||||
margin-right:10px;
|
||||
}
|
||||
#user_footer {
|
||||
width:70%;
|
||||
float:left;
|
||||
margin:1em;
|
||||
}
|
||||
#user_footer p {
|
||||
font:normal 1em/1.2em serif;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
div#navigation, div#subnavigation {
|
||||
#navigation, #subnavigation {
|
||||
margin:0;
|
||||
padding:4px 0 0 0;
|
||||
background-color:#EEE;
|
||||
}
|
||||
div#navigation ul, div#subnavigation ul {
|
||||
#navigation ul, #subnavigation ul {
|
||||
list-style:none;
|
||||
min-width:770px;
|
||||
height:22px;
|
||||
@@ -238,12 +194,12 @@ div#navigation ul, div#subnavigation ul {
|
||||
padding:0 0 0 12px;
|
||||
border-bottom:1px solid #999;
|
||||
}
|
||||
div#navigation ul li, div#subnavigation ul li {
|
||||
#navigation ul li, #subnavigation ul li {
|
||||
margin:0;
|
||||
padding:0;
|
||||
float:left;
|
||||
}
|
||||
div#navigation ul li a, div#subnavigation ul li a {
|
||||
#navigation ul li a, #subnavigation ul li a {
|
||||
display:block;
|
||||
font-size:12px;
|
||||
line-height:100%;
|
||||
@@ -253,11 +209,11 @@ div#navigation ul li a, div#subnavigation ul li a {
|
||||
padding:5px 5px;
|
||||
background-color:#EEE;
|
||||
}
|
||||
div#navigation ul li a:hover, div#subnavigation ul li a:hover {
|
||||
#navigation ul li a:hover, #subnavigation ul li a:hover {
|
||||
background-color:#CCC;
|
||||
border-bottom:solid 1px #000;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a, div#subnavigation ul li.CurrentSection a {
|
||||
#navigation ul li.CurrentSection a, #subnavigation ul li.CurrentSection a {
|
||||
padding-bottom:4px;
|
||||
border-top:solid 1px #999;
|
||||
border-right:solid 1px #999;
|
||||
@@ -265,14 +221,14 @@ div#navigation ul li.CurrentSection a, div#subnavigation ul li.CurrentSection a
|
||||
border-bottom:solid 1px #FFF;
|
||||
background-color:#FFF;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a:hover {
|
||||
#navigation ul li.CurrentSection a:hover {
|
||||
background-color:#FFF;
|
||||
}
|
||||
div#subnavigation ul li.CurrentSection a {
|
||||
#subnavigation ul li.CurrentSection a {
|
||||
border-width:0 0 1px 0;
|
||||
}
|
||||
|
||||
/* Alphabet Navigation Bar
|
||||
/* Alphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphabet {
|
||||
width: 100%;
|
||||
@@ -297,7 +253,7 @@ div#alphabet ul li {
|
||||
float:left;
|
||||
}
|
||||
div#alphabet ul li a {
|
||||
display:block;
|
||||
display: block;
|
||||
padding: 4px 8px 4px 8px;
|
||||
float:left;
|
||||
font:bold 16px/100% sans;
|
||||
@@ -314,7 +270,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -480,10 +436,23 @@ table.individuallist tbody tr td.ColumnName a {
|
||||
table.individuallist tbody tr td.ColumnName a:hover {
|
||||
background-color:#CCC;
|
||||
}
|
||||
#IndividualDetail div table.infolist tr td, #Individuals div table.infolist tr td p {
|
||||
#Individuals div table.infolist tr td p {
|
||||
vertical-align:top;
|
||||
}
|
||||
#IndividualDetail div table.infolist tr td a, #Individuals div table.infolist tr td p a {
|
||||
#Individuals div table.infolist tr td p a {
|
||||
display:inline;
|
||||
}
|
||||
|
||||
/* IndividualDetail
|
||||
------------------------------------------------------ */
|
||||
#IndividualDetail {
|
||||
background-color:#EEE;
|
||||
}
|
||||
#IndividualDetail div table.infolist tr td {
|
||||
font:normal .9em/1.2em sans-serif;
|
||||
vertical-align:top;
|
||||
}
|
||||
#IndividualDetail div table.infolist tr td a {
|
||||
display:inline;
|
||||
}
|
||||
#IndividualDetail table.infolist tr td a:hover {
|
||||
@@ -491,8 +460,10 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
}
|
||||
#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
|
||||
width:10%;
|
||||
color:#999;
|
||||
padding-left:5px;
|
||||
color:#696969;
|
||||
}
|
||||
#IndividualDetail div.subsection table tr td:first-child {
|
||||
padding-left:20px;
|
||||
}
|
||||
|
||||
/* Sources
|
||||
@@ -519,99 +490,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
|
||||
div#EventList, div#EventDetail { }
|
||||
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 30%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr.BeginName {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1.4em;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #000;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
@@ -689,53 +567,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-color:#CCC;
|
||||
}
|
||||
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
|
||||
#Download {
|
||||
margin: 0;
|
||||
padding: .5em 0 .5em 0;
|
||||
}
|
||||
table.download {
|
||||
padding: 0;
|
||||
margin: .5em 0 .5em 0;
|
||||
border: solid 1px #000;
|
||||
width: 100%;
|
||||
background-color: #CCC;
|
||||
}
|
||||
table.download img {
|
||||
/* float:center; */
|
||||
}
|
||||
table.download tbody tr#Row02 {
|
||||
border-bottom:solid 1px #000;
|
||||
}
|
||||
table.download tbody tr td {
|
||||
border-style:solid;
|
||||
border-color: #000;
|
||||
border-width: 0px 2px 2px 2px;
|
||||
text-align:left;
|
||||
}
|
||||
table.download td.ColumnFilename {
|
||||
width:30%;
|
||||
background-color: #FFF;
|
||||
}
|
||||
table.download td.ColumnFilename a {
|
||||
display:block;
|
||||
padding:10px;
|
||||
font-weight:bold;
|
||||
font-style: italic;
|
||||
text-decoration:none;
|
||||
}
|
||||
table.download td.ColumnDescription {
|
||||
width:45%;
|
||||
}
|
||||
table.download td.ColumnLicense {
|
||||
width:6%;
|
||||
}
|
||||
table.download td.ColumnModified {
|
||||
width:17%;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
#Contact #summaryarea {
|
||||
@@ -781,70 +612,61 @@ table.download td.ColumnModified {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList { }
|
||||
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
background-color: #CCC;
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
#Download {
|
||||
padding:1cm;
|
||||
height:396px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
table.download {
|
||||
border:solid 2px #000;
|
||||
width:100%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
table.download img {
|
||||
float:center;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
border:solid 2px #000;
|
||||
color: #000;
|
||||
text-transform:uppercase;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
table.download tbody tr#Row02 {
|
||||
border-bottom:solid 2px #000;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
table.download thead tr th, table.download tbody tr td {
|
||||
padding-left:10px;
|
||||
padding-top:20px;
|
||||
border-style:solid;
|
||||
border-color:#000;
|
||||
border-width:0 2px 2px 2px;
|
||||
text-align:left;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
table.download td.Description {
|
||||
width: 50%;
|
||||
}
|
||||
div#AddressBookList tble.addressbook tbody tr.Totals td {
|
||||
text-align: left;
|
||||
background-color: #EEE;
|
||||
table.download td.License {
|
||||
width:8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #CCC;
|
||||
text-align: center;
|
||||
border: solid 1px #000;
|
||||
table.download td.Filename {
|
||||
width:30%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 4%;
|
||||
table.download td.Filename a {
|
||||
font-weight:bold;
|
||||
font-style: italic;
|
||||
text-decoration:none;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
table.download td.Filename a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
table.download td.Modified {
|
||||
width:12%;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
#Home, #Introduction, #Contact {
|
||||
padding:1.5em 0 3em 0;
|
||||
}
|
||||
#Home p, #Introduction p, #Contact p {
|
||||
@@ -979,46 +801,6 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #EEE;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
background-color: #FFF;
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1080,25 +862,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
background-color: #EEE;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 6%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1139,139 +902,55 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
#footer {
|
||||
clear:both;
|
||||
width:100%;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#333;
|
||||
margin:0;
|
||||
padding:15px 0 0 0;
|
||||
background-color:#CCC;
|
||||
border-top:solid 1px #333;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
text-decoration:none;
|
||||
color:#333;
|
||||
}
|
||||
#footer a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
#footer img {
|
||||
border:0;
|
||||
margin:0 auto;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float:left;
|
||||
width:40%;
|
||||
text-align:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
#footer p#copyright {
|
||||
float:right;
|
||||
width:40%;
|
||||
text-align:right;
|
||||
margin-right:10px;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
margin-right:10px;
|
||||
}
|
||||
#user_footer {
|
||||
width:70%;
|
||||
float:left;
|
||||
margin:1em;
|
||||
}
|
||||
#user_footer p {
|
||||
font:normal 1em/1.2em serif;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#EEE;
|
||||
border:solid 1px #999;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #333;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:3px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#999;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:2px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#999;
|
||||
}
|
||||
#tree div div.gvline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
height:3px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#EEE;
|
||||
}
|
||||
#tree div div.ghline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
width:2px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#EEE;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -1442,27 +1121,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+89
-69
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
# Copyright (C) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# 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
|
||||
@@ -48,34 +48,41 @@ Females Web_Gender_Female.png
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
body {
|
||||
background-color :#FFF;
|
||||
color: #000;
|
||||
background-color: #000;
|
||||
color: #FFF;
|
||||
}
|
||||
div#alphabet, div#navigation, div#subnavigation {
|
||||
border-top: solid 2px #000;
|
||||
|
||||
/* Menu Elements
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
div#alphabet ul, div#navigation ul, div#subnavigation ul {
|
||||
background-color: #000;
|
||||
}
|
||||
div#alphabet ul li, div#navigation ul li, div#subnavigation ul li {
|
||||
border-color: #13A926;
|
||||
}
|
||||
div#alphabet ul li a {
|
||||
color: #000;
|
||||
}
|
||||
div#navigation ul, div#subnavigation ul {
|
||||
border-bottom: solid 2px #000;
|
||||
color: #FFF;
|
||||
font: normal 16px sans;
|
||||
}
|
||||
div#navigation ul li a, div#subnavigation ul li a {
|
||||
color: #000;
|
||||
color: #FFF;
|
||||
font: normal 14px serif;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a {
|
||||
background-color: #00029D;
|
||||
background-color: #13A926;
|
||||
color: #FFF;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a:hover {
|
||||
background-color: #BCEAF6;
|
||||
color: #000;
|
||||
}
|
||||
div#subnavigation ul li.CurrentSection a {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
background-color: #BCEAF6;
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
div#subnavigation ul li.CurrentSection a:hover {
|
||||
background-color: #000;
|
||||
@@ -109,6 +116,8 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
background-color: #FFF;
|
||||
color: #000;
|
||||
overflow: auto;
|
||||
width:965px;
|
||||
margin:0 auto;
|
||||
@@ -137,13 +146,20 @@ img {
|
||||
clear:both;
|
||||
}
|
||||
|
||||
/* Gramps Styled Notes
|
||||
------------------------------------------------------- */
|
||||
div#grampsstylednote a {
|
||||
color: Navy;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
h1 {
|
||||
font:normal 2em/1.2em serif;
|
||||
}
|
||||
h2 {
|
||||
font:bold 2em/1.2em sans;
|
||||
display: none;
|
||||
}
|
||||
h3 {
|
||||
font:normal 2em/1.2em serif;
|
||||
@@ -225,6 +241,7 @@ div#header {
|
||||
border-bottom: solid 8px #13A926;
|
||||
height: 65px;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
#SiteTitle {
|
||||
margin:0;
|
||||
@@ -245,15 +262,16 @@ p#user_header {
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
div#footer {
|
||||
width: 100%;
|
||||
clear:both;
|
||||
overflow:hidden;
|
||||
width:100%;
|
||||
height: 60px;
|
||||
overflow: auto;
|
||||
clear: both;
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
color: #FFF;
|
||||
background-color: #00029D;
|
||||
border-top: solid 8px #13A926;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#FFF;
|
||||
margin-top: 0.5cm;
|
||||
background-color:#00029D;
|
||||
border-top:solid 8px #13A926;
|
||||
}
|
||||
div#footer a, div#footer a:visited {
|
||||
text-decoration: none;
|
||||
@@ -323,7 +341,6 @@ table.infolist tr td {
|
||||
font: normal 1.1em/1.4em serif;
|
||||
vertical-align: middle;
|
||||
border-bottom: dashed 1px #000;
|
||||
background-color: #BCEAF6;
|
||||
padding: 6px 0 6px 10px;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
@@ -503,13 +520,22 @@ div#Places {
|
||||
padding: 0;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnLetter {
|
||||
background-color: #BCEAF6;
|
||||
width: 6%;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnLetter a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnName a {
|
||||
padding:.1em 10px .3em 10px;
|
||||
div#Places table.infolist tbody tr td.ColumnName {
|
||||
width: 45%;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnState {
|
||||
width: 8%;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnCountry {
|
||||
width: 8%;
|
||||
}
|
||||
div#Places table.infolist tbody tr td.ColumnCoordinates {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
@@ -521,33 +547,33 @@ div#EventList, div#EventDetail {
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
div#events table.eventlist tbody tr td.ColumnEvent a {
|
||||
padding: 2px 100px 2px 10px;
|
||||
}
|
||||
div#events table.eventlist tbody tr td.ColumnPlace a {
|
||||
padding: 2px 70px 2px 0px;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 20%;
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 16%;
|
||||
width: 12%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 35%;
|
||||
width: 25%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 12%;
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 25%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 12%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.infolist tbody tr td.ColumnLetter a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr.BeginName {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
@@ -596,15 +622,11 @@ div#EventDetail table.eventlist tbody tr {
|
||||
border-top: dashed 1px #000;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||
background-color: #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -743,10 +765,9 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
|
||||
div#Download {
|
||||
margin: 0;
|
||||
padding: 0px 0px .5em 0px;
|
||||
width: 100%;
|
||||
}
|
||||
div#Download table.download {
|
||||
padding: 0;
|
||||
@@ -754,9 +775,6 @@ div#Download table.download {
|
||||
border: solid 1px #000;
|
||||
width: 100%;
|
||||
}
|
||||
div#Download table.download img {
|
||||
text-align: center;
|
||||
}
|
||||
div#Download table.download tbody tr#Row02 {
|
||||
border-bottom: solid 2px #000;
|
||||
}
|
||||
@@ -764,23 +782,22 @@ div#Download table.download tbody tr td {
|
||||
border: solid 1px #000;
|
||||
text-align: left;
|
||||
}
|
||||
div#Download table.download td.Filename {
|
||||
div#Download table.download td.ColumnFilename {
|
||||
width: 30%;
|
||||
}
|
||||
div#Download table.download td.Filename a {
|
||||
div#Download table.download td.ColumnFilename a {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
text-decoration: none;
|
||||
}
|
||||
div#Download table.download td.Description {
|
||||
div#Download table.download td.ColumnDescription {
|
||||
width: 45%;
|
||||
}
|
||||
div#Download table.download td.License {
|
||||
width: 6%;
|
||||
}
|
||||
div#Download table.download td.Modified {
|
||||
div#Download table.download td.ColumnModified {
|
||||
width: 17%;
|
||||
}
|
||||
div#Download p#description a.copyright a img {
|
||||
float: center;
|
||||
}
|
||||
|
||||
/* Sources
|
||||
----------------------------------------------------- */
|
||||
@@ -866,7 +883,7 @@ div.subsection table, div.subsection ol, div.subsection p {
|
||||
font-size:.9em;
|
||||
}
|
||||
div.subsection a {
|
||||
text-decoration:none;
|
||||
text-decoration:underline;
|
||||
}
|
||||
div.subsection a:hover {
|
||||
text-decoration:underline;
|
||||
@@ -896,7 +913,6 @@ div#events h4 {
|
||||
font-weight:bold;
|
||||
font-size:10px;
|
||||
line-height:12px;
|
||||
text-transform:uppercase;
|
||||
color: #000;
|
||||
padding:6px 0 4px 0;
|
||||
background-color: #70B1ED;
|
||||
@@ -960,9 +976,16 @@ table.attrlist tbody tr td.ColumnAttrSources {
|
||||
|
||||
/* Subsections : Parents
|
||||
----------------------------------------------------- */
|
||||
div#parents {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#parents table.infolist {
|
||||
margin-top:.5em;
|
||||
}
|
||||
div#parents table.infolist tbody tr td {
|
||||
border: none;
|
||||
}
|
||||
div#parents table.infolist tbody tr td.ColumnAttribute {
|
||||
width:19%;
|
||||
}
|
||||
@@ -981,18 +1004,15 @@ div#families {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#families table.infolist {
|
||||
margin: .3cm 0 .3cm 0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue p {
|
||||
margin-top:0;
|
||||
margin-top: 0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||
margin:0;
|
||||
padding-top:0;
|
||||
margin: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue ol li {
|
||||
padding-bottom:.2em;
|
||||
padding-bottom: .2em;
|
||||
}
|
||||
|
||||
/* Subsection: LDS Ordinance
|
||||
@@ -1369,7 +1389,6 @@ div#pedigree {
|
||||
width:100%;
|
||||
font-size:2em;
|
||||
line-height:100%;
|
||||
text-transform:none;
|
||||
color: #542;
|
||||
padding:.3em 0 .2em 0;
|
||||
background-color: #FFF;
|
||||
@@ -1383,13 +1402,13 @@ div#pedigree {
|
||||
color: #FFF;
|
||||
}
|
||||
#CreatorInfo a:hover {
|
||||
color: #FFF;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
.calendar thead tr th.weekday {
|
||||
font-style:italic;
|
||||
color: #000;
|
||||
background-color: #BCEAF6;
|
||||
color: #FFF;
|
||||
background-color: #00029D;
|
||||
border: solid 2px #000;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
@@ -1456,11 +1475,12 @@ div#pedigree {
|
||||
margin:0 4%;
|
||||
padding:.2em 0 .3em 0;
|
||||
border-top: dashed 1px #000;
|
||||
color: #000;
|
||||
font: normal .8em serif;
|
||||
}
|
||||
.calendar tbody tr td ul li:first-child {
|
||||
border:none;
|
||||
}
|
||||
|
||||
/* Calendar : Birthday, Anniversary, Highlight */
|
||||
.calendar tbody tr td ul li em {
|
||||
font-style:normal;
|
||||
|
||||
+94
-464
@@ -1,32 +1,37 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic - Cypress
|
||||
Style Author: Jason Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Tranquil' stylesheet
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
--------------------------------------------------------------------------------------------------
|
||||
@@ -40,17 +45,16 @@ white #FFF
|
||||
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
body#NarrativeWeb {
|
||||
font-family: sans-serif;
|
||||
color: #000;
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* General Elements
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
|
||||
body {
|
||||
font-family:sans-serif;
|
||||
color:#000;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
div {
|
||||
margin:0;
|
||||
padding:0;
|
||||
@@ -63,7 +67,7 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
padding-top: .5cm;
|
||||
padding-top: 1cm;
|
||||
background-color:#FFF;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -152,18 +156,15 @@ a:visited {
|
||||
|
||||
/* Header
|
||||
----------------------------------------------------- */
|
||||
div#header {
|
||||
#header {
|
||||
padding:15px 15px 15px 15px;
|
||||
margin:0;
|
||||
background-color:#454;
|
||||
}
|
||||
div#header a {
|
||||
color: #FFF;
|
||||
height: 1cm;
|
||||
}
|
||||
#SiteTitle {
|
||||
margin:0;
|
||||
padding:.5em 0 0.5em 10px;
|
||||
font-size: 40px;
|
||||
color:#E0E6E0;
|
||||
font-style: italic;
|
||||
margin:0 0 3px 0;
|
||||
}
|
||||
#header p {
|
||||
font-size:1em;
|
||||
@@ -172,64 +173,14 @@ div#header a {
|
||||
margin:0;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
|
||||
div#footer {
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
height: 60px;
|
||||
color: #E8E6E8;
|
||||
border-top: solid 1px #454;
|
||||
background-color: #454;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
text-decoration:none;
|
||||
color:#E0E6E0;
|
||||
}
|
||||
#footer a:hover {
|
||||
text-decoration:underline;
|
||||
background:none;
|
||||
}
|
||||
#footer img {
|
||||
border:0;
|
||||
margin:0 auto;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float:left;
|
||||
width:40%;
|
||||
text-align:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
#footer p#copyright {
|
||||
float:right;
|
||||
width:40%;
|
||||
text-align:right;
|
||||
margin-right:10px;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
margin-right:10px;
|
||||
}
|
||||
#user_footer {
|
||||
width:70%;
|
||||
float:left;
|
||||
margin:1em;
|
||||
}
|
||||
#user_footer p {
|
||||
font:normal 1em/1.2em serif;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
#navigation {
|
||||
#navigation, #subnavigation {
|
||||
margin:0;
|
||||
padding:4px 0 0 0;
|
||||
background-color:#454;
|
||||
}
|
||||
#navigation ul {
|
||||
#navigation ul, #subnavigation ul {
|
||||
list-style:none;
|
||||
min-width:770px;
|
||||
height:22px;
|
||||
@@ -237,12 +188,12 @@ div#footer {
|
||||
padding:0 0 0 12px;
|
||||
border-bottom:1px solid #7C8F7C;
|
||||
}
|
||||
#navigation ul li {
|
||||
#navigation ul li, #subnavigation ul li {
|
||||
margin:0;
|
||||
padding:0;
|
||||
float:left;
|
||||
}
|
||||
#navigation ul li a {
|
||||
#navigation ul li a, #subnavigation ul li a {
|
||||
display:block;
|
||||
font-size:12px;
|
||||
line-height:100%;
|
||||
@@ -253,14 +204,14 @@ div#footer {
|
||||
padding:5px 5px;
|
||||
background-color:#454;
|
||||
}
|
||||
#navigation ul li a:hover {
|
||||
#navigation ul li a:hover, #subnavigation ul li a:hover {
|
||||
color:#FFF;
|
||||
padding-top:4px;
|
||||
background-color:#9DBF9D;
|
||||
border-top:solid 1px #454;
|
||||
border-bottom:solid 1px #000;
|
||||
}
|
||||
#navigation ul li.CurrentSection a {
|
||||
#navigation ul li.CurrentSection a, #subnavigation ul li.CurrentSection a {
|
||||
color:#454;
|
||||
padding-bottom:4px;
|
||||
border-top:solid 1px #7C8F7C;
|
||||
@@ -269,7 +220,7 @@ div#footer {
|
||||
border-bottom:solid 1px #FFF;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#navigation ul li.CurrentSection a:hover {
|
||||
#navigation ul li.CurrentSection a:hover, #subnavigation ul li.CurrentSection a:hover {
|
||||
padding-top:5px;
|
||||
background-color:#FFF;
|
||||
}
|
||||
@@ -289,11 +240,10 @@ div#alphabet ul {
|
||||
padding: 0px 0px 0px 16px;
|
||||
border-width: 2px 0px 4px 0px;
|
||||
border-style: solid;
|
||||
border-color: #000;
|
||||
border-color: #FFF;
|
||||
}
|
||||
div#alphabet ul li:after {
|
||||
content:" |";
|
||||
color: #FFF;
|
||||
}
|
||||
div#alphabet ul li {
|
||||
margin:0;
|
||||
@@ -317,7 +267,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -537,99 +487,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail { }
|
||||
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1em;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #000;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
@@ -763,7 +620,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align:center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -804,71 +661,9 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList tble.addressbook tbody tr.Totals td {
|
||||
text-align: left;
|
||||
background-color: #E0E0E6;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #9DBF9D;
|
||||
text-align: center;
|
||||
border: solid 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 4%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
#Home, #Introduction, {
|
||||
padding:1.5em 0 3em 0;
|
||||
}
|
||||
#Home p, #Introduction p, #Contact p {
|
||||
@@ -1003,45 +798,6 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #E6E6E0;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1103,25 +859,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
background-color: #E0E6E0;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1162,139 +899,56 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
#footer {
|
||||
clear:both;
|
||||
width:100%;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#E0E6E0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#454;
|
||||
border-top:solid 1px #454;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
text-decoration:none;
|
||||
color:#E0E6E0;
|
||||
}
|
||||
#footer a:hover {
|
||||
text-decoration:underline;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
margin-bottom:1.4em;
|
||||
#footer img {
|
||||
border:0;
|
||||
margin:0 auto;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
#footer p#createdate {
|
||||
float:left;
|
||||
width:40%;
|
||||
text-align:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
#footer p#copyright {
|
||||
float:right;
|
||||
width:40%;
|
||||
text-align:right;
|
||||
margin-right:10px;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
margin-right:10px;
|
||||
}
|
||||
#user_footer {
|
||||
width:70%;
|
||||
float:left;
|
||||
margin:1em;
|
||||
}
|
||||
#user_footer p {
|
||||
font:normal 1em/1.2em serif;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#E0E6E0;
|
||||
border:solid 1px #7C8F7C;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #454;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:3px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#7C8F7C;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:2px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#7C8F7C;
|
||||
}
|
||||
#tree div div.gvline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
height:3px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#E0E6E0;
|
||||
}
|
||||
#tree div div.ghline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
width:2px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#E0E6E0;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -1447,27 +1101,3 @@ body#WebCal #CreatorInfo a, body#WebCal #CreatorInfo a:hover {
|
||||
color:#9DBF9D;
|
||||
background-color:#E0E6E0;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+33
-404
@@ -1,32 +1,37 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic - Lilac
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Business' stylesheet
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
--------------------------------------------------------------------------------------------------
|
||||
@@ -65,7 +70,7 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
padding-top: .5cm;
|
||||
padding-top: 1cm;
|
||||
background-color:#FAFAFF;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -226,7 +231,7 @@ a:visited {
|
||||
div#alphabet {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
background-color: #E8E0F9;
|
||||
background-color: #E0E0E9;
|
||||
}
|
||||
div#alphabet ul {
|
||||
list-style:none;
|
||||
@@ -263,7 +268,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -483,101 +488,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #5D835F;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1em;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #5D835F;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
@@ -703,16 +613,15 @@ div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
#Download {
|
||||
padding: 1cm;
|
||||
padding:1cm;
|
||||
height:396px;
|
||||
}
|
||||
table.download {
|
||||
padding-top: .5cm;
|
||||
border:solid 1px #000;
|
||||
border:solid 2px #000;
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align:center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -753,69 +662,6 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
background-color: #D8F3D6;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList tble.addressbook tbody tr.Totals td {
|
||||
text-align: left;
|
||||
background-color: #E0E0E9;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #B4B4CB;
|
||||
text-align: center;
|
||||
border: solid 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 4%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
@@ -953,45 +799,6 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #E0E0E9;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1053,25 +860,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
background-color: #E6E0E9;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1112,147 +900,12 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#E0E0E9;
|
||||
border:solid 1px #669;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #2E2E61;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:3px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#669;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:2px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#669;
|
||||
}
|
||||
#tree div div.gvline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
height:3px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#E0E0E9;
|
||||
}
|
||||
#tree div div.ghline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
width:2px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#E0E0E9;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
clear:both;
|
||||
width:100%;
|
||||
height: 60px;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#2E2E61;
|
||||
@@ -1467,27 +1120,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+29
-403
@@ -1,27 +1,6 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Peach Stylesheet
|
||||
@@ -29,7 +8,30 @@ Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange color scheme.
|
||||
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
@@ -69,7 +71,7 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
padding-top: .5cm;
|
||||
padding-top: 1cm;
|
||||
background-color:#FFFBE7;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -163,7 +165,7 @@ a:visited {
|
||||
#header {
|
||||
padding:15px 15px 2px 15px;
|
||||
margin:0;
|
||||
background-color: #FFE09F;
|
||||
background-color:#FFE09F;
|
||||
}
|
||||
#SiteTitle {
|
||||
color:#EA8414;
|
||||
@@ -267,7 +269,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -487,101 +489,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1em;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #000;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
@@ -715,7 +622,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align:center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -756,69 +663,6 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
background-color: #FFE09F;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList tble.addressbook tbody tr.Totals td {
|
||||
text-align: left;
|
||||
background-color: #FFE09F;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #FFE09F;
|
||||
text-align: center;
|
||||
border: solid 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 4%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
@@ -956,45 +800,6 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #FFE09F;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1056,25 +861,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
background-color: #FFE09F;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1115,147 +901,11 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#36220B;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#FFE09F;
|
||||
border:solid 1px #8C581C;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #8C581C;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:3px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#EA8414;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:2px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#EA8414;
|
||||
}
|
||||
#tree div div.gvline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
height:3px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#FFE09F;
|
||||
}
|
||||
#tree div div.ghline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
width:2px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#FFE09F;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
clear:both;
|
||||
width:100%;
|
||||
height: 60px;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#8C581C;
|
||||
@@ -1470,27 +1120,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+32
-403
@@ -1,33 +1,37 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Spruce Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue color scheme.
|
||||
**************************************************************************************************
|
||||
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
@@ -67,7 +71,7 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
padding-top: .5cm;
|
||||
padding-top: 1cm;
|
||||
background-color:#FFF;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -228,7 +232,7 @@ a:visited {
|
||||
div#alphabet {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
background-color: #EAFFE4;
|
||||
background-color: #EAFFF4;
|
||||
}
|
||||
div#alphabet ul {
|
||||
list-style:none;
|
||||
@@ -265,7 +269,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -485,101 +489,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1em;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #000;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
@@ -713,7 +622,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align:center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -754,69 +663,6 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
background-color: #EAFFE4;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList tble.addressbook tbody tr.Totals td {
|
||||
text-align: left;
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #BFD0EA;
|
||||
text-align: center;
|
||||
border: solid 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 4%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
@@ -954,45 +800,6 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #EAEEF4;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1054,24 +861,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1112,153 +901,17 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#EAEEF4;
|
||||
border:solid 1px #7CA3DD;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #204D91;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:3px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#7CA3DD;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:2px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#7CA3DD;
|
||||
}
|
||||
#tree div div.gvline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
height:3px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#EAEEF4;
|
||||
}
|
||||
#tree div div.ghline {
|
||||
position:absolute;
|
||||
z-index:1;
|
||||
width:2px;
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background-color:#EAEEF4;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
clear:both;
|
||||
width:100%;
|
||||
height: 100px;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
color:#204D91;
|
||||
margin:0;
|
||||
padding:15px 0 0 0;
|
||||
background-color: #BFD0EA;
|
||||
background-color:#BFD0EA;
|
||||
border-top:solid 1px #204D91;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
@@ -1467,27 +1120,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+65
-453
@@ -1,33 +1,37 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
*******************************************************************************
|
||||
----------------------------------------------------------------------------
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Mainz
|
||||
Style Author: Jason Simanek (2008)
|
||||
*******************************************************************************
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
This website was created with GRAMPS
|
||||
----------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
License
|
||||
----------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
|
||||
Color Palette
|
||||
----------------------------------------------------------------------------
|
||||
@@ -60,11 +64,11 @@ body {
|
||||
font-family:Georgia, serif;
|
||||
color:#7D5925;
|
||||
margin:0;
|
||||
padding:0 14px 0 14px;
|
||||
background:url(../images/Web_Mainz_Bkgd.png) #FFF2C6 repeat;
|
||||
padding:0;
|
||||
background:url(../images/Web_Mainz_Bkgd.png) #000 repeat;
|
||||
}
|
||||
div {
|
||||
margin: 0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
img {
|
||||
@@ -77,7 +81,7 @@ img {
|
||||
.content {
|
||||
width:965px;
|
||||
margin:0 auto;
|
||||
padding-bottom:.5em;
|
||||
padding: 1cm 0px .5em 0px;
|
||||
background:url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -144,7 +148,7 @@ p {
|
||||
margin:0;
|
||||
}
|
||||
p#description {
|
||||
padding:10px 15px 10px 15px;
|
||||
padding:0 15px 1em 15px;
|
||||
}
|
||||
p a:link {
|
||||
text-decoration:underline;
|
||||
@@ -177,7 +181,7 @@ a:visited {
|
||||
/* Header
|
||||
----------------------------------------------------- */
|
||||
#header {
|
||||
width: 965px;
|
||||
width:965px;
|
||||
margin:0 auto;
|
||||
padding:5em 0 2px 0;
|
||||
background:url(../images/Web_Mainz_Header.png) repeat-x top left;
|
||||
@@ -194,27 +198,11 @@ a:visited {
|
||||
margin:0 0 5px 50px;
|
||||
}
|
||||
|
||||
#data {
|
||||
background-color: white;
|
||||
border-style: solid;
|
||||
border-color: #7D5925;
|
||||
border-width:1px 1px 1px 1px;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
table tr.even {
|
||||
background-color: #FFF2C5;
|
||||
}
|
||||
|
||||
table tr.odd {
|
||||
background-color: #ffffe7;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
#navigation, #subnavigation {
|
||||
font-family:sans-serif;
|
||||
width: 965px;
|
||||
width:965px;
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
background:url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||
@@ -268,9 +256,10 @@ table tr.odd {
|
||||
div#alphabet {
|
||||
width: 965px;
|
||||
margin: 0;
|
||||
background-color: #FFF2C5;
|
||||
background-color: #FFF2C6;
|
||||
}
|
||||
div#alphabet ul {
|
||||
padding: 0px 25px 0px 25px;
|
||||
list-style:none;
|
||||
min-width:770px;
|
||||
height:24px;
|
||||
@@ -305,7 +294,7 @@ div#alphabet ul li a:hover {
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
font-size:14px;
|
||||
margin:0;
|
||||
margin:0 15px 1em 15px;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
@@ -317,39 +306,13 @@ table tr th {
|
||||
padding:.1em 10px;
|
||||
border-bottom:double 4px #7D5925;
|
||||
}
|
||||
table.infolist tr th a {
|
||||
text-decoration:none;
|
||||
}
|
||||
table tr td {
|
||||
vertical-align:middle;
|
||||
padding:.1em 10px;
|
||||
}
|
||||
table tr td.TableHeaderCell {
|
||||
color: #7D5925;
|
||||
background-color: #f8eec9;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
font-size: 0.8em;
|
||||
margin:0;
|
||||
border-bottom:double 4px #7D5925;
|
||||
border-left:solid 2px #7D5925;
|
||||
border-right:solid 2px #7D5925;
|
||||
border-top:solid 2px #7D5925;
|
||||
}
|
||||
|
||||
table tr td.TableDataCell {
|
||||
color: #7D5925;
|
||||
background-color: white;
|
||||
border:solid 2px #7D5925;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
table tr td.TableDataCell a {
|
||||
display: block;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
table.infolist tr th a {
|
||||
text-decoration:none;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
display:block;
|
||||
text-decoration:none;
|
||||
@@ -515,9 +478,6 @@ table.individuallist tbody tr td.ColumnName a {
|
||||
|
||||
/* Sources
|
||||
----------------------------------------------------- */
|
||||
#Sources table.infolist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
#Sources table.infolist tbody tr td.ColumnRowLabel {
|
||||
padding-bottom:0;
|
||||
}
|
||||
@@ -543,113 +503,8 @@ table.individuallist tbody tr td.ColumnName a {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: large;
|
||||
}
|
||||
div#EventDetail h3:first-letter {
|
||||
color: #000;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
border-top: solid 1px #000;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery {
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
}
|
||||
#Gallery table.infolist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
#Gallery table.infolist tbody tr td.ColumnRowLabel, #Gallery table.infolist tbody tr td.ColumnDate {
|
||||
padding-bottom:0;
|
||||
}
|
||||
@@ -770,15 +625,15 @@ div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
#Download {
|
||||
padding: 0;
|
||||
width: 965;
|
||||
height: 350px;
|
||||
padding:1cm;
|
||||
height:396px;
|
||||
}
|
||||
table.download {
|
||||
border:solid 2px #000;
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align: center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -819,73 +674,13 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList, div#RepositoryDetail {
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 20%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, AddressBookDetail {
|
||||
margin: auto;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
text-align: left;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
width: 6%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
text-align: left;
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
text-align: center;
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.adressbook tbody tr td.ColumnResidence {
|
||||
text-align: center;
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
text-align: center;
|
||||
width: 12%;
|
||||
}
|
||||
|
||||
/* SubSection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
min-height:500px;
|
||||
padding:1.5em 0 3em 0;
|
||||
}
|
||||
#Home p, #Introduction p, #Surnames p, #Individuals p, #Sources p, #Places p, #Gallery p {
|
||||
#Home p, #Introduction p, #Surnames p, #Individuals p, #Sources p, #Places p, #Gallery p, {
|
||||
margin:0 20px 1em 20px;
|
||||
padding-top:1em;
|
||||
}
|
||||
@@ -1008,46 +803,8 @@ div#addresses table.infolist tbody tr td.ColumnValue {
|
||||
border-bottom:dashed 1px #D8C19F;
|
||||
}
|
||||
|
||||
/* Subsections : Attributes
|
||||
/* SubSection : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* SubSection : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -1109,22 +866,6 @@ div#sourcerefs ol li ol {
|
||||
|
||||
/* SubSection : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
table.weblinks tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 6%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 40%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* SubSection : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1165,164 +906,39 @@ table.weblinks tr td.ColumnDescription {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* SubSection : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
padding-bottom:1.4em;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .8em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#7D5925;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#FFFFE7;
|
||||
border:dotted 2px #7D5925;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
color:#7D5925;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #7D5925;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:2px;
|
||||
margin:2px 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#D8C19F;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:1px;
|
||||
margin:2px 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#D8C19F;
|
||||
}
|
||||
.ghline, .gvline {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
clear: both;
|
||||
width: 965px;
|
||||
height: 80px;
|
||||
font-size: 10px;
|
||||
line-height: 130%;
|
||||
font-family: sans-serif;
|
||||
margin: 0 auto;
|
||||
padding: 15px 0 0 0;
|
||||
color: #000;
|
||||
background:url(../images/Web_Mainz_MidLight.png) #FFF2C6 bottom left repeat;
|
||||
clear:both;
|
||||
width:965px;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
font-family:sans-serif;
|
||||
margin:0 auto;
|
||||
padding:15px 0 0 0;
|
||||
background:url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||
border-top:dashed 1px #7D5925;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
text-decoration:none;
|
||||
color: #000;
|
||||
}
|
||||
#footer a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
#footer img {
|
||||
border: 0;
|
||||
margin: 0 auto;
|
||||
vertical-align: middle;
|
||||
border:0;
|
||||
margin:0 auto;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
width: 60%;
|
||||
text-align: left;
|
||||
margin-left: 10px;
|
||||
float:left;
|
||||
width:40%;
|
||||
text-align:left;
|
||||
margin-left:10px;
|
||||
}
|
||||
#footer p#copyright {
|
||||
float:right;
|
||||
width: 60%;
|
||||
width:40%;
|
||||
text-align:right;
|
||||
margin-right:10px;
|
||||
}
|
||||
@@ -1455,9 +1071,8 @@ table.weblinks tr td.ColumnDescription {
|
||||
.calendar tbody tr td ul li span.yearsmarried em {
|
||||
color:#453619;
|
||||
}
|
||||
.calendar tbody tr td.highlight { }
|
||||
.calendar tbody tr td.EmptyDays {
|
||||
background-color: #FFF2C6;
|
||||
.calendar tbody tr td.highlight {
|
||||
|
||||
}
|
||||
.calendar tbody tr td.highlight div.date {
|
||||
color:#767D25;
|
||||
@@ -1497,6 +1112,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
body#OneDay {
|
||||
background:url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ Style Name: Web_Navigation-Horizontal Stylesheet
|
||||
----------------------------------------------------- */
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0 14px 0 14px;
|
||||
padding: 0px 14px 0px 14px;
|
||||
width: 965px;
|
||||
}
|
||||
|
||||
@@ -47,54 +47,54 @@ div#alphabet ul {
|
||||
height: 24px;
|
||||
margin: 0;
|
||||
padding: 0px 0px 0px 16px;
|
||||
border-width: 2px 0px 4px 0px;
|
||||
border-width: 2px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#alphabet ul li:after {
|
||||
content: " |";
|
||||
}
|
||||
div#alphabet ul li {
|
||||
border-width: 0px 2px 0px 2px;
|
||||
border-style: solid;
|
||||
margin: 0;
|
||||
float: left;
|
||||
}
|
||||
div#alphabet ul li:first-child {
|
||||
margin-left: 4px;
|
||||
border-left: none;
|
||||
}
|
||||
div#alphabet ul li a {
|
||||
font: normal 16px sans;
|
||||
display: block;
|
||||
padding: 4px 8px 4px 8px;
|
||||
float: left;
|
||||
font: bold 16px/100% sans;
|
||||
margin: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
/* Navigation/ Subnavigation
|
||||
----------------------------------------------------- */
|
||||
div#navigation, div#subnavigation {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#navigation ul, div#subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: 900px;
|
||||
height: 24px;
|
||||
margin: 0;
|
||||
padding: 0px 0px 0px 9px;
|
||||
padding: 4px 0px 0px 14px;
|
||||
border-width: 2px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#navigation ul li, div#subnavigation ul li {
|
||||
border-width: 0px 2px 0px 2px;
|
||||
border-style: solid;
|
||||
float: left;
|
||||
padding: 2px 6px 4px 6px;
|
||||
margin: 0;
|
||||
}
|
||||
div#navigation ul li:first-child, div#subnavigation ul li:first-child {
|
||||
margin-left: 4px;
|
||||
content: "| ";
|
||||
}
|
||||
div#navigation ul li:after, div#subnavigation ul li:after {
|
||||
content: "| ";
|
||||
border-left: none;
|
||||
}
|
||||
div#navigation ul li a, div#subnavigation ul li a {
|
||||
display: block;
|
||||
padding: 4px;
|
||||
float: left;
|
||||
font: .8em bold italic small-caps verdana, serif;
|
||||
font: normal 12px serif;
|
||||
text-decoration: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
+62
-426
@@ -1,32 +1,36 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008 Jason M. Simanek
|
||||
# Copyright 2009 Stephane Charette
|
||||
# Copyright (c) 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Nebraska Default Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
**************************************************************************************************
|
||||
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
@@ -79,6 +83,7 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
padding-top: 1cm;
|
||||
background-color:#FFF;
|
||||
}
|
||||
.content div.snapshot {
|
||||
@@ -199,7 +204,7 @@ p#user_header {
|
||||
background-color:#542;
|
||||
}
|
||||
|
||||
/* Navigation / SubNavigation
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
div#navigation, div#subnavigation {
|
||||
width: 100%;
|
||||
@@ -208,44 +213,44 @@ div#navigation, div#subnavigation {
|
||||
}
|
||||
div#navigation ul, div#subnavigation ul {
|
||||
list-style:none;
|
||||
height: 24px;
|
||||
min-width: 900px;
|
||||
height: 40px;
|
||||
margin:0;
|
||||
padding: 0px 0px 0px 9px;
|
||||
border-bottom: solid 2px #000;
|
||||
padding: 0px 0px 0px 16px;
|
||||
border-bottom: solid 2px #5D835F;
|
||||
}
|
||||
div#navigation ul li, div#subnavigation ul li {
|
||||
float: left;
|
||||
}
|
||||
div#navigation ul li:first-child, div#subnavigation ul li:first-child {
|
||||
margin-left: 10px;
|
||||
}
|
||||
div#navigation ul li:after, div#subnavigation ul li:after {
|
||||
content: "| ";
|
||||
float:left;
|
||||
}
|
||||
div#navigation ul li a, div#subnavigation ul li a {
|
||||
background-color: #A97;
|
||||
display: block;
|
||||
padding: 4px 8px 4px 8px;
|
||||
float: left;
|
||||
padding: 12px 16px 14px 1px;
|
||||
float:left;
|
||||
font: .8em bold italic small-caps verdana, serif;
|
||||
color: #000;
|
||||
text-decoration:none;
|
||||
margin:0;
|
||||
}
|
||||
div#navigation ul li a:hover, div#subnavigation ul li a:hover {
|
||||
background-color: #FFF;
|
||||
color: #453619;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a,
|
||||
div#subnavigation ul li.CurrentSection a {
|
||||
background-color: #C1B398;
|
||||
color: #000;
|
||||
}
|
||||
div#navigation ul li.CurrentSection a:hover,
|
||||
div#subnavigation ul li.CurrentSection a:hover {
|
||||
background-color: #000;
|
||||
color: #FFF;
|
||||
#navigation ul li.CurrentSection a, #subnavigation ul li.CurrentSection a {
|
||||
font-size:19px;
|
||||
margin-top:-6px;
|
||||
padding-top:11px;
|
||||
padding-bottom:8px;
|
||||
border-right:solid 1px #542;
|
||||
border-left:solid 1px #542;
|
||||
border-bottom:solid 1px #FFF;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#navigation ul li.CurrentSection a:hover {
|
||||
background-color:#FFF;
|
||||
}
|
||||
#subnavigation ul li.CurrentSection a {
|
||||
border-width:0 0 1px 0;
|
||||
}
|
||||
|
||||
/* Alphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphabet {
|
||||
@@ -255,6 +260,7 @@ div#alphabet {
|
||||
}
|
||||
div#alphabet ul {
|
||||
list-style:none;
|
||||
min-width:770px;
|
||||
height:24px;
|
||||
margin:0;
|
||||
padding: 0px 0px 0px 16px;
|
||||
@@ -305,6 +311,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;
|
||||
@@ -337,12 +344,6 @@ table.infolist tbody tr td.ColumnType {
|
||||
}
|
||||
table.infolist tbody tr td.ColumnPartner {
|
||||
font-size:.9em;
|
||||
background-color:#FFF;
|
||||
}
|
||||
table.infolist tbody tr td.ColumnPartner a:hover {
|
||||
display:block;
|
||||
padding:15px;
|
||||
background-color:#C1B398;
|
||||
}
|
||||
table.infolist tbody tr td.ColumnParents {
|
||||
font-size:.9em;
|
||||
@@ -495,7 +496,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
}
|
||||
#Sources table.infolist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#Sources table.infolist tbody tr td.ColumnName a {
|
||||
font-size:.9em;
|
||||
@@ -513,7 +513,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
#Places { }
|
||||
#Places table.infolist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#Places table.infolist tbody tr td.ColumnName a {
|
||||
padding:.1em 10px .3em 10px;
|
||||
@@ -522,101 +521,6 @@ table.individuallist tbody tr td.ColumnName a:hover {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
|
||||
/* EventList and EventDetail
|
||||
----------------------------------------------------- */
|
||||
div#EventList, div#EventDetail {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#events table.eventlist {
|
||||
margin-top: .3cm;
|
||||
}
|
||||
table.eventlist tbody tr.BeginName {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td {
|
||||
padding: 4px 0px 4px 0px;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDescription {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPartner {
|
||||
width: 35%;
|
||||
}
|
||||
div#EventList table.eventlist tbody tr td.ColumnEvent a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPerson a,
|
||||
div#EventList table.eventlist tbody tr td.ColumnPartner a {
|
||||
display: block;
|
||||
padding: .9em 10px;
|
||||
}
|
||||
div#EventList table.alphaevent {
|
||||
padding: .3em 0 .3em 0;
|
||||
margin: 0;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr.BeginEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnType a:hover {
|
||||
background: none;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
width: 12%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother:before {
|
||||
content:"+ ";
|
||||
}
|
||||
div#EventDetail h3 {
|
||||
font-size: 1em;;
|
||||
}
|
||||
div#EventDetail table.eventlist {
|
||||
margin: .5cm 0 .3cm 1.5cm;
|
||||
width: 800px;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
border-top: solid 1px #000;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
width: 20%;
|
||||
}
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery { }
|
||||
@@ -625,7 +529,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
}
|
||||
#Gallery table.infolist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#Gallery table.infolist tbody tr td.ColumnName a {
|
||||
padding:.1em 10px .3em 10px;
|
||||
@@ -721,22 +624,22 @@ div#EventDetail table.eventlist tbody tr td.ColumnEvent {
|
||||
margin-right:.4em;
|
||||
}
|
||||
#streetaddress {
|
||||
width: 100%;
|
||||
width:85%;
|
||||
}
|
||||
#city:after {
|
||||
content: ",";
|
||||
content:",";
|
||||
}
|
||||
#country {
|
||||
clear: left;
|
||||
clear:left;
|
||||
}
|
||||
#email {
|
||||
clear: left;
|
||||
clear:left;
|
||||
}
|
||||
#email a {
|
||||
text-decoration: none;
|
||||
text-decoration:none;
|
||||
}
|
||||
#email a:hover {
|
||||
text-decoration: underline;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
/* Download
|
||||
@@ -750,7 +653,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
text-align:center;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -791,69 +694,6 @@ table.download td.Modified {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Repositories
|
||||
------------------------------------------------------ */
|
||||
div#RepositoryList {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td {
|
||||
background-color: #C1B398;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td a {
|
||||
display: block;
|
||||
padding: .3em 10px;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnRowLabel {
|
||||
width: 9%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnType {
|
||||
width: 15%;
|
||||
}
|
||||
div#RepositoryList table.repolist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
/* Address Book
|
||||
------------------------------------------------------ */
|
||||
div#AddressBookList, div#AddressBookDetail {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook {
|
||||
margin: .3em 0 .3em 0;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr.BeginName {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr.Totals td {
|
||||
background-color: #F6F2EE;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td {
|
||||
background-color: #FFF;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnRowLabel {
|
||||
background-color: #F6F2EE;
|
||||
width: 4%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName {
|
||||
width: 70%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnName a {
|
||||
display: block;
|
||||
padding: 6px 0px 6px 0px;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnAddress {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnResidence {
|
||||
width: 8%;
|
||||
}
|
||||
div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
width: 8%;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
@@ -932,45 +772,6 @@ table.infolist tbody tr td.ColumnValue p {
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
div#attributes {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.attrlist {
|
||||
width: 100%;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist thead tr th.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td {
|
||||
background-color: #F6F2EE;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnType {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttribute {
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrType {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrValue {
|
||||
width: 15%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrNotes {
|
||||
width: 45%;
|
||||
}
|
||||
table.attrlist tbody tr td.ColumnAttrSources {
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsections : Parents
|
||||
----------------------------------------------------- */
|
||||
@@ -1102,25 +903,6 @@ div#summaryarea table.infolist tbody tr td.ColumnAttribute {
|
||||
|
||||
/* Subsections : Weblinks
|
||||
----------------------------------------------------- */
|
||||
div#WebLinks {
|
||||
margin : 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.weblinks tr td {
|
||||
background-color: #F6F2EE;
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.weblinks tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.weblinks tr td.ColumnType {
|
||||
width: 30%;
|
||||
}
|
||||
table.weblinks tr td.ColumnDescription {
|
||||
background-color: #FFF;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
@@ -1168,134 +950,12 @@ div#pedigree {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color: #FFF;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .7em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color:#542;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color:#F6F2EE;
|
||||
border:solid 1px #542;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
color:#542;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border:solid 2px #542;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover, #treeContainer div.AncCol3 a:hover, #treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked,
|
||||
#treeContainer div.female a ,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-position:top right;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Male.png);
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background-image:url(../images/Web_Gender_Female.png);
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:1px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#453619;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:1px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color:#453619;
|
||||
}
|
||||
.ghline, .gvline {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
overflow: hidden;
|
||||
clear:both;
|
||||
width:100%;
|
||||
height: 60px;
|
||||
font-size:12px;
|
||||
line-height:130%;
|
||||
font-family:sans-serif;
|
||||
@@ -1508,27 +1168,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
|
||||
/* Calendar: OneDay
|
||||
--------------------------------------------------------------------------------- */
|
||||
body#OneDay h3 {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
table.oneday {
|
||||
margin: .3em 0 .3em 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.oneday tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnRowLabel {
|
||||
width: 5%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
+362
-1053
File diff suppressed because it is too large
Load Diff
+441
-828
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# $Id: $
|
||||
#
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Combined Ancestor Tree Style Sheet
|
||||
***************************************************************************************************
|
||||
#
|
||||
===== Ancestor Graph Color Scheme =====
|
||||
Males #BCEAF6
|
||||
Females #FFC0CB
|
||||
Unknown #000
|
||||
#
|
||||
===== Web Graphics =====
|
||||
Males Web_Gender_Male.png
|
||||
Females Web_Gender_Female.png
|
||||
# ------------------------------------------------------------------------------------------------- */
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
#treeContainer div.boxbg span.unlinked {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .7em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
color: #00029D;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
margin-left:16px;
|
||||
background-color: #FFF;
|
||||
border: solid 1px #000;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
text-decoration:none;
|
||||
color: #00029D;
|
||||
width:190px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border: solid 2px #000;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover,
|
||||
#treeContainer div.AncCol3 a:hover,
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
}
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-left:-60px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg span.fullname {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg span.shortname {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg a:hover span.fullname {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg a:hover span.shortname {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background:url(../images/Web_Gender_Male.png) #BCEAF6 no-repeat top right;
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background:url(../images/Web_Gender_Female.png) #FFC0CB no-repeat top right;
|
||||
}
|
||||
#treeContainer div.unknown a,
|
||||
#treeContainer div.unknown span.unlinked {
|
||||
background-color: #000;
|
||||
color: #FFF;
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:1px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color: #00029D;
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:1px;
|
||||
margin:0 0 0 16px;
|
||||
padding:0;
|
||||
background-color: #00029D;
|
||||
}
|
||||
.ghline, .gvline {
|
||||
display:none;
|
||||
}
|
||||
+24
-22
@@ -1,29 +1,31 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2009 Stephane Charette and Jason Simanek
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
-------------------------------------------------------------------------------
|
||||
GRAMPS cascading style sheet for common behaviour independant of styles
|
||||
Style Name: n/a (used by many different styles)
|
||||
Style Author: Stephane Charette and Jason Simanek
|
||||
**************************************************************************************************
|
||||
-------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://www.gramps-project.org/> to learn more!
|
||||
|
||||
License
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright 2009 Stephane Charette and Jason Simanek
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS 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
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
-------------
|
||||
Image Gallery
|
||||
|
||||
+21
-12
@@ -411,71 +411,80 @@ class DbBsddbRead(DbReadBase, Callback):
|
||||
map_index += 1
|
||||
index = prefix % map_index
|
||||
map_index += 1
|
||||
return index
|
||||
return (map_index, index)
|
||||
|
||||
def find_next_person_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Person object based off the
|
||||
person ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.person_prefix,
|
||||
self.pmap_index, gid = self.__find_next_gramps_id(self.person_prefix,
|
||||
self.pmap_index, self.id_trans)
|
||||
return gid
|
||||
|
||||
def find_next_place_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Place object based off the
|
||||
place ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.place_prefix,
|
||||
self.lmap_index, gid = self.__find_next_gramps_id(self.place_prefix,
|
||||
self.lmap_index, self.pid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_event_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Event object based off the
|
||||
event ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.event_prefix,
|
||||
self.emap_index, gid = self.__find_next_gramps_id(self.event_prefix,
|
||||
self.emap_index, self.eid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_object_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a MediaObject object based
|
||||
off the media object ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.mediaobject_prefix,
|
||||
self.omap_index, self.oid_trans)
|
||||
self.omap_index, gid = self.__find_next_gramps_id(self.mediaobject_prefix,
|
||||
self.omap_index, self.oid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_source_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Source object based off the
|
||||
source ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.source_prefix,
|
||||
self.smap_index, gid = self.__find_next_gramps_id(self.source_prefix,
|
||||
self.smap_index, self.sid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_family_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Family object based off the
|
||||
family ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.family_prefix,
|
||||
self.fmap_index, gid = self.__find_next_gramps_id(self.family_prefix,
|
||||
self.fmap_index, self.fid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_repository_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Respository object based
|
||||
off the repository ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.repository_prefix,
|
||||
self.rmap_index, self.rid_trans)
|
||||
self.rmap_index, gid = self.__find_next_gramps_id(self.repository_prefix,
|
||||
self.rmap_index, self.rid_trans)
|
||||
return gid
|
||||
|
||||
def find_next_note_gramps_id(self):
|
||||
"""
|
||||
Return the next available GRAMPS' ID for a Note object based off the
|
||||
note ID prefix.
|
||||
"""
|
||||
return self.__find_next_gramps_id(self.note_prefix,
|
||||
self.nmap_index, self.nid_trans)
|
||||
self.nmap_index, gid = self.__find_next_gramps_id(self.note_prefix,
|
||||
self.nmap_index, self.nid_trans)
|
||||
return gid
|
||||
|
||||
def get_from_handle(self, handle, class_type, data_map):
|
||||
data = data_map.get(str(handle))
|
||||
if data:
|
||||
|
||||
@@ -169,6 +169,8 @@ class DbTxn(defaultdict):
|
||||
While the list is an arbitrary index of integers, it can be used
|
||||
to indicate record numbers for a database.
|
||||
"""
|
||||
if self.first is None or self.last is None:
|
||||
return []
|
||||
if not reverse:
|
||||
return xrange(self.first, self.last+1)
|
||||
else:
|
||||
|
||||
+27
-24
@@ -58,6 +58,7 @@ from gen.db.dbconst import *
|
||||
from gen.utils.callback import Callback
|
||||
from gen.updatecallback import UpdateCallback
|
||||
import Errors
|
||||
import constfunc
|
||||
|
||||
_LOG = logging.getLogger(DBLOGNAME)
|
||||
_MINVERSION = 9
|
||||
@@ -1586,8 +1587,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
@catch_db_error
|
||||
def transaction_commit(self, transaction, msg):
|
||||
if self._LOG_ALL:
|
||||
LOG.debug("%s: Transaction commit '%s'\n"
|
||||
% (self.__class__.__name__, str(msg)))
|
||||
_LOG.debug("%s: Transaction commit '%s'\n"
|
||||
% (self.__class__.__name__, str(msg)))
|
||||
|
||||
if self.readonly:
|
||||
return
|
||||
@@ -1659,25 +1660,20 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
"""
|
||||
BSDDB change log settings using new method with renamed attributes
|
||||
"""
|
||||
if db.version() < (4, 7):
|
||||
# by the book: old method with old attribute
|
||||
self.env.set_flags(db.DB_LOG_AUTOREMOVE, 1)
|
||||
else: # look at python interface
|
||||
# TODO test with new version of pybsddb
|
||||
try:
|
||||
# try numeric compare, just first 2 digits
|
||||
# this won't work with something like "4.10a", but
|
||||
# hopefully they won't do that
|
||||
old_version = map(int, db.__version__.split(".",2)[:2]) < (4, 7)
|
||||
except:
|
||||
# fallback, weak string compare
|
||||
old_version = db.__version__ < "4.7"
|
||||
if old_version:
|
||||
# undocumented: old method with new attribute
|
||||
self.env.set_flags(db.DB_LOG_AUTO_REMOVE, 1)
|
||||
else:
|
||||
# by the book: new method with new attribute
|
||||
self.env.log_set_config(db.DB_LOG_AUTO_REMOVE, 1)
|
||||
autoremove_flag = None
|
||||
autoremove_method = None
|
||||
for flag in ["DB_LOG_AUTO_REMOVE", "DB_LOG_AUTOREMOVE"]:
|
||||
if hasattr(db, flag):
|
||||
autoremove_flag = getattr(db, flag)
|
||||
break
|
||||
for method in ["log_set_config", "set_flags"]:
|
||||
if hasattr(self.env, method):
|
||||
autoremove_method = getattr(self.env, method)
|
||||
break
|
||||
if autoremove_method and autoremove_flag:
|
||||
autoremove_method(autoremove_flag, 1)
|
||||
else:
|
||||
_LOG.debug("Failed to set autoremove flag")
|
||||
|
||||
def write_version(self, name):
|
||||
"""Write version number for a newly created DB."""
|
||||
@@ -1699,7 +1695,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
||||
db.DB_INIT_LOG | db.DB_INIT_TXN | db.DB_THREAD
|
||||
|
||||
# As opposed to before, we always try recovery on databases
|
||||
env_flags = env_flags | db.DB_RECOVER
|
||||
env_flags |= db.DB_RECOVER
|
||||
|
||||
# Environment name is now based on the filename
|
||||
env_name = name
|
||||
@@ -1756,8 +1752,12 @@ def write_lock_file(name):
|
||||
if not os.path.isdir(name):
|
||||
os.mkdir(name)
|
||||
f = open(os.path.join(name, DBLOCKFN), "w")
|
||||
if os.name == 'nt':
|
||||
text = os.environ['USERNAME']
|
||||
if constfunc.win():
|
||||
user = os.environ['USERNAME']
|
||||
try:
|
||||
host = os.environ['USERDOMAIN']
|
||||
except:
|
||||
host = ""
|
||||
else:
|
||||
host = os.uname()[1]
|
||||
# An ugly workaround for os.getlogin() issue with Konsole
|
||||
@@ -1765,7 +1765,10 @@ def write_lock_file(name):
|
||||
user = os.getlogin()
|
||||
except:
|
||||
user = os.environ.get('USER')
|
||||
if host:
|
||||
text = "%s@%s" % (user, host)
|
||||
else:
|
||||
text = user
|
||||
# Save only the username and host, so the massage can be
|
||||
# printed with correct locale in DbManager.py when a lock is found
|
||||
f.write(text)
|
||||
|
||||
+14
-7
@@ -393,11 +393,14 @@ class NameDisplay(object):
|
||||
]
|
||||
format_str = format_str[1:]
|
||||
else:
|
||||
patterns = [",\W*\(%(" + ("|".join(codes)) + ")\)", # ,\W*(%s)
|
||||
",\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
|
||||
"\(%(" + ("|".join(codes)) + ")\)", # (%s)
|
||||
"%(" + ("|".join(codes)) + ")", # %s
|
||||
]
|
||||
patterns = [
|
||||
",\W*\"%(" + ("|".join(codes)) + ")\"", # ,\W*"%s"
|
||||
",\W*\(%(" + ("|".join(codes)) + ")\)", # ,\W*(%s)
|
||||
",\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
|
||||
"\"%(" + ("|".join(codes)) + ")\"", # "%s"
|
||||
"\(%(" + ("|".join(codes)) + ")\)", # (%s)
|
||||
"%(" + ("|".join(codes)) + ")", # %s
|
||||
]
|
||||
new_fmt = format_str
|
||||
|
||||
# replace the specific format string flags with a
|
||||
@@ -599,8 +602,10 @@ def fn(%s):
|
||||
return db.get_name_group_mapping(pn.surname)
|
||||
elif sv == Name.PTFN:
|
||||
return db.get_name_group_mapping(pn.patronymic)
|
||||
else:
|
||||
elif sv == Name.FN:
|
||||
return db.get_name_group_mapping(pn.first_name)
|
||||
else:
|
||||
return db.get_name_group_mapping(pn.surname)
|
||||
|
||||
def name_grouping_data(self, db, pn):
|
||||
if pn[_GROUP]:
|
||||
@@ -610,7 +615,9 @@ def fn(%s):
|
||||
return db.get_name_group_mapping(pn[_SURNAME])
|
||||
elif sv == Name.PTFN:
|
||||
return db.get_name_group_mapping(pn[_PATRONYM])
|
||||
else:
|
||||
elif sv == Name.FN:
|
||||
return db.get_name_group_mapping(pn[_FIRSTNAME])
|
||||
else:
|
||||
return db.get_name_group_mapping(pn[_SURNAME])
|
||||
|
||||
displayer = NameDisplay()
|
||||
|
||||
@@ -955,8 +955,6 @@ class PluginRegister(object):
|
||||
lenpd = len(self.__plugindata)
|
||||
full_filename = os.path.join(dir, filename)
|
||||
local_gettext = get_addon_translator(full_filename).gettext
|
||||
if type(full_filename) == str:
|
||||
full_filename = unicode(full_filename, sys.getfilesystemencoding())
|
||||
try:
|
||||
#execfile(full_filename,
|
||||
execfile(full_filename.encode(sys.getfilesystemencoding()),
|
||||
|
||||
@@ -228,7 +228,9 @@ class DocBackend(object):
|
||||
typeval = int(s_tag.name)
|
||||
s_tagvalue = s_tag.value
|
||||
tag_name = None
|
||||
if tagtype.STYLE_TYPE[typeval] == bool:
|
||||
if typeval not in tagtype.STYLE_TYPE:
|
||||
return None
|
||||
elif tagtype.STYLE_TYPE[typeval] == bool:
|
||||
return self.STYLETAG_MARKUP[self.STYLETYPE_MAP[typeval]]
|
||||
elif tagtype.STYLE_TYPE[typeval] == str:
|
||||
tag_name = "%d %s" % (typeval, s_tagvalue)
|
||||
|
||||
+50
-35
@@ -68,7 +68,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
self.flist = set()
|
||||
for handle in self.plist:
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
self.flist.update(person.get_family_handle_list())
|
||||
if person:
|
||||
self.flist.update(person.get_family_handle_list())
|
||||
|
||||
def get_person_from_handle(self, handle):
|
||||
"""
|
||||
@@ -77,7 +78,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
"""
|
||||
if handle in self.plist:
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
|
||||
if person is None:
|
||||
return None
|
||||
person.set_person_ref_list(
|
||||
[ ref for ref in person.get_person_ref_list()
|
||||
if ref.ref in self.plist ])
|
||||
@@ -129,6 +131,7 @@ class FilterProxyDb(ProxyDbBase):
|
||||
"""
|
||||
source = self.db.get_source_from_handle(handle)
|
||||
# Filter notes out
|
||||
|
||||
self.sanitize_notebase(source)
|
||||
return source
|
||||
|
||||
@@ -175,7 +178,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
"""
|
||||
if handle in self.flist:
|
||||
family = self.db.get_family_from_handle(handle)
|
||||
|
||||
if family is None:
|
||||
return None
|
||||
eref_list = [ eref for eref in family.get_event_ref_list()
|
||||
if eref.ref in self.elist ]
|
||||
family.set_event_ref_list(eref_list)
|
||||
@@ -224,7 +228,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Person exists, None is returned.
|
||||
"""
|
||||
person = self.db.get_person_from_gramps_id(val)
|
||||
return self.get_person_from_handle(person.get_handle())
|
||||
if person:
|
||||
return self.get_person_from_handle(person.get_handle())
|
||||
|
||||
def get_family_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -232,7 +237,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Family exists, None is returned.
|
||||
"""
|
||||
family = self.db.get_family_from_gramps_id(val)
|
||||
return self.get_family_from_handle(family.get_handle())
|
||||
if family:
|
||||
return self.get_family_from_handle(family.get_handle())
|
||||
|
||||
def get_event_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -240,7 +246,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Event exists, None is returned.
|
||||
"""
|
||||
event = self.db.get_event_from_gramps_id(val)
|
||||
return self.get_event_from_handle(event.get_handle())
|
||||
if event:
|
||||
return self.get_event_from_handle(event.get_handle())
|
||||
|
||||
def get_place_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -248,7 +255,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Place exists, None is returned.
|
||||
"""
|
||||
place = self.db.get_place_from_gramps_id(val)
|
||||
return self.get_place_from_handle(place.get_handle())
|
||||
if place:
|
||||
return self.get_place_from_handle(place.get_handle())
|
||||
|
||||
def get_source_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -256,7 +264,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Source exists, None is returned.
|
||||
"""
|
||||
source = self.db.get_source_from_gramps_id(val)
|
||||
return self.get_source_from_handle(source.get_handle())
|
||||
if source:
|
||||
return self.get_source_from_handle(source.get_handle())
|
||||
|
||||
def get_object_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -264,7 +273,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such MediaObject exists, None is returned.
|
||||
"""
|
||||
media = self.db.get_object_from_gramps_id(val)
|
||||
return self.get_object_from_handle(media.get_handle())
|
||||
if media:
|
||||
return self.get_object_from_handle(media.get_handle())
|
||||
|
||||
def get_repository_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -272,7 +282,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Repository exists, None is returned.
|
||||
"""
|
||||
repository = self.db.get_repository_from_gramps_id(val)
|
||||
return self.get_repository_from_handle(repository.get_handle())
|
||||
if repository:
|
||||
return self.get_repository_from_handle(repository.get_handle())
|
||||
|
||||
def get_note_from_gramps_id(self, val):
|
||||
"""
|
||||
@@ -280,7 +291,8 @@ class FilterProxyDb(ProxyDbBase):
|
||||
If no such Note exists, None is returned.
|
||||
"""
|
||||
note = self.db.get_note_from_gramps_id(val)
|
||||
return self.get_note_from_handle(note.get_handle())
|
||||
if note:
|
||||
return self.get_note_from_handle(note.get_handle())
|
||||
|
||||
def get_person_handles(self, sort_handles=True):
|
||||
"""
|
||||
@@ -416,10 +428,10 @@ class FilterProxyDb(ProxyDbBase):
|
||||
@param notebase: NoteBase object to clean
|
||||
@type event: NoteBase
|
||||
"""
|
||||
|
||||
note_list = notebase.get_note_list()
|
||||
new_note_list = [ note for note in note_list if note in self.nlist ]
|
||||
notebase.set_note_list(new_note_list)
|
||||
if notebase:
|
||||
note_list = notebase.get_note_list()
|
||||
new_note_list = [ note for note in note_list if note in self.nlist ]
|
||||
notebase.set_note_list(new_note_list)
|
||||
|
||||
def sanitize_sourcebase(self, sourcebase):
|
||||
"""
|
||||
@@ -427,15 +439,17 @@ class FilterProxyDb(ProxyDbBase):
|
||||
@param event: SourceBase object to clean
|
||||
@type event: SourceBase
|
||||
"""
|
||||
sources = sourcebase.get_source_references()
|
||||
for source in sources:
|
||||
self.sanitize_notebase(source)
|
||||
if sourcebase:
|
||||
sources = sourcebase.get_source_references()
|
||||
for source in sources:
|
||||
self.sanitize_notebase(source)
|
||||
|
||||
def sanitize_addressbase(self, addressbase):
|
||||
addresses = addressbase.get_address_list()
|
||||
for address in addresses:
|
||||
self.sanitize_notebase(address)
|
||||
self.sanitize_sourcebase(address)
|
||||
if addressbase:
|
||||
addresses = addressbase.get_address_list()
|
||||
for address in addresses:
|
||||
self.sanitize_notebase(address)
|
||||
self.sanitize_sourcebase(address)
|
||||
|
||||
def sanitize_person(self, person):
|
||||
"""
|
||||
@@ -443,18 +457,19 @@ class FilterProxyDb(ProxyDbBase):
|
||||
@param event: Person object to clean
|
||||
@type event: Person
|
||||
"""
|
||||
# Filter note references
|
||||
self.sanitize_notebase(person)
|
||||
self.sanitize_sourcebase(person)
|
||||
self.sanitize_addressbase(person)
|
||||
|
||||
name = person.get_primary_name()
|
||||
self.sanitize_notebase(name)
|
||||
self.sanitize_sourcebase(name)
|
||||
|
||||
altnames = person.get_alternate_names()
|
||||
for name in altnames:
|
||||
if person:
|
||||
# Filter note references
|
||||
self.sanitize_notebase(person)
|
||||
self.sanitize_sourcebase(person)
|
||||
self.sanitize_addressbase(person)
|
||||
|
||||
name = person.get_primary_name()
|
||||
self.sanitize_notebase(name)
|
||||
self.sanitize_sourcebase(name)
|
||||
|
||||
self.sanitize_addressbase(person)
|
||||
|
||||
altnames = person.get_alternate_names()
|
||||
for name in altnames:
|
||||
self.sanitize_notebase(name)
|
||||
self.sanitize_sourcebase(name)
|
||||
|
||||
self.sanitize_addressbase(person)
|
||||
|
||||
@@ -36,7 +36,8 @@ Proxy class for the GRAMPS databases. Filter out all living people.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from proxybase import ProxyDbBase
|
||||
from gen.lib import Date, Person, Name
|
||||
from gen.lib import Person, Name
|
||||
from gen.lib.date import Today
|
||||
from Utils import probably_alive
|
||||
import config
|
||||
|
||||
@@ -78,8 +79,7 @@ class LivingProxyDb(ProxyDbBase):
|
||||
ProxyDbBase.__init__(self, dbase)
|
||||
self.mode = mode
|
||||
if current_year is not None:
|
||||
self.current_date = Date()
|
||||
self.current_date.set_year(current_year)
|
||||
self.current_date = Today()
|
||||
else:
|
||||
self.current_date = None
|
||||
self.years_after_death = years_after_death
|
||||
@@ -192,7 +192,7 @@ class LivingProxyDb(ProxyDbBase):
|
||||
Returns False if the person is not considered living.
|
||||
"""
|
||||
return probably_alive( person,
|
||||
self.db,
|
||||
self.basedb,
|
||||
self.current_date,
|
||||
self.years_after_death )
|
||||
|
||||
@@ -210,7 +210,7 @@ class LivingProxyDb(ProxyDbBase):
|
||||
father_handle = family.get_father_handle()
|
||||
if father_handle:
|
||||
father = self.db.get_person_from_handle(father_handle)
|
||||
if self.__is_living(father):
|
||||
if father and self.__is_living(father):
|
||||
parent_is_living = True
|
||||
if self.mode == self.MODE_EXCLUDE_ALL:
|
||||
family.set_father_handle(None)
|
||||
@@ -218,7 +218,7 @@ class LivingProxyDb(ProxyDbBase):
|
||||
mother_handle = family.get_mother_handle()
|
||||
if mother_handle:
|
||||
mother = self.db.get_person_from_handle(mother_handle)
|
||||
if self.__is_living(mother):
|
||||
if mother and self.__is_living(mother):
|
||||
parent_is_living = True
|
||||
if self.mode == self.MODE_EXCLUDE_ALL:
|
||||
family.set_mother_handle(None)
|
||||
@@ -231,7 +231,7 @@ class LivingProxyDb(ProxyDbBase):
|
||||
for child_ref in family.get_child_ref_list():
|
||||
child_handle = child_ref.get_reference_handle()
|
||||
child = self.db.get_person_from_handle(child_handle)
|
||||
if self.__is_living(child):
|
||||
if child and self.__is_living(child):
|
||||
family.remove_child_ref(child_ref)
|
||||
|
||||
return family
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user