Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f614bd76f | |||
| 0442c34258 | |||
| c903f5e5a5 | |||
| 3329860f50 | |||
| e7401f3aaa | |||
| 1a48e8a03e | |||
| 9a4adab9d6 | |||
| bb0647274b | |||
| f6bfb46fc0 | |||
| b6fa5da8ee | |||
| 14c2d0e1b6 | |||
| 226e8c549a | |||
| d173809d8c | |||
| 63c52fa1bb | |||
| 455628d44a | |||
| 670bb355cb | |||
| 202c7a9bf6 | |||
| 72955840f1 | |||
| b8e73d5ee1 | |||
| 990db39664 | |||
| 9c0dca6bd1 | |||
| 02e0c1c67d | |||
| ebf1715468 | |||
| c10f2da00e | |||
| 9f71372a97 | |||
| 0993d9cfc3 | |||
| 34471834ab | |||
| ff912f844c | |||
| 45eac501a9 | |||
| d4e85c2397 | |||
| c7a4d287f0 | |||
| c0d622c16a | |||
| b38f77f2aa | |||
| d91fc9e2fb | |||
| 198602be61 | |||
| 3f9f3215ee | |||
| beb388a30d | |||
| 29e78d4253 | |||
| b80dcaf701 | |||
| a876d94fbc | |||
| 95e1e8cb67 |
@@ -7,6 +7,9 @@ build/
|
||||
dist/
|
||||
|
||||
# Gramps
|
||||
data/tips.xml
|
||||
data/holidays.xml
|
||||
po/.intltool-merge-cache
|
||||
docs/_build/
|
||||
|
||||
# Editing
|
||||
|
||||
@@ -23,11 +23,16 @@
|
||||
# After changing this file, check it on:
|
||||
# http://lint.travis-ci.org/
|
||||
|
||||
os: linux
|
||||
dist: xenial
|
||||
sudo: required
|
||||
dist: trusty
|
||||
language: python
|
||||
python:
|
||||
- 3.4 # This is irrelevant, because the virtualenv is not used at all
|
||||
- 3.3 # This is irrelevant, because the virtualenv is not used at all
|
||||
|
||||
# FIXME: The minimum requirement for Gramps is Python 3.2, so a test environment
|
||||
# for Python 3.2 should be added to this environment which is Python 3.3. It
|
||||
# will not be possible to run coverage under Python 3.2, because coverage is
|
||||
# Python 3.3 (or above) only.
|
||||
|
||||
addons:
|
||||
apt:
|
||||
@@ -46,7 +51,7 @@ addons:
|
||||
- python3-dev
|
||||
- python3-nose
|
||||
- python3-mock
|
||||
- python3-icu
|
||||
- python3-pyicu
|
||||
- python3-coverage
|
||||
- python3-jsonschema
|
||||
# lxml dependencies. for merge_ref_test to work
|
||||
@@ -90,11 +95,11 @@ before_script:
|
||||
# set GRAMPS_RESOURCES for locale, data,image and documentation
|
||||
- export GRAMPS_RESOURCES=.
|
||||
# Install addons
|
||||
- mkdir -p ~/.gramps/gramps52/plugins/
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps52/download/CliMerge.addon.tgz
|
||||
- tar -C ~/.gramps/gramps52/plugins -xzf CliMerge.addon.tgz
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps52/download/ExportRaw.addon.tgz
|
||||
- tar -C ~/.gramps/gramps52/plugins -xzf ExportRaw.addon.tgz
|
||||
- mkdir -p ~/.gramps/gramps51/plugins/
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps51/download/CliMerge.addon.tgz
|
||||
- tar -C ~/.gramps/gramps51/plugins -xzf CliMerge.addon.tgz
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps51/download/ExportRaw.addon.tgz
|
||||
- tar -C ~/.gramps/gramps51/plugins -xzf ExportRaw.addon.tgz
|
||||
|
||||
script:
|
||||
# Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
|
||||
@@ -122,25 +127,3 @@ after_success:
|
||||
# picks up coverage from /usr/bin, rather than from
|
||||
# /home/travis/virtualenv/python3.3.6/bin/
|
||||
- PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)
|
||||
|
||||
stages:
|
||||
- test
|
||||
# Only execute deployment stage on tagged commits, and from our repository
|
||||
# (e.g. not PRs).
|
||||
- name: deploy
|
||||
if: tag IS PRESENT AND repo = gramps-project/gramps
|
||||
|
||||
env:
|
||||
global:
|
||||
- TWINE_USERNAME=__token__
|
||||
|
||||
jobs:
|
||||
include:
|
||||
# Deploy source distribution
|
||||
- stage: deploy
|
||||
name: Deploy source distribution and wheel
|
||||
install: skip
|
||||
script: python3 setup.py sdist bdist_wheel
|
||||
after_success: |
|
||||
python3 -m pip install twine
|
||||
python3 -m twine upload --repository testpypi --skip-existing dist/*
|
||||
|
||||
@@ -32,9 +32,6 @@ We do not check all dependencies of Gramps, see README for a list of
|
||||
all required and optional dependencies. Missing dependencies will
|
||||
result in runtime errors.
|
||||
|
||||
To install all needed dependences you can use (in Ubuntu):
|
||||
sudo apt-get build-dep gramps
|
||||
|
||||
To build and install, whether from a tarball or git repo:
|
||||
python3 setup.py build
|
||||
sudo python3 setup.py install
|
||||
@@ -51,7 +48,7 @@ things like MIME type and desktop entries.
|
||||
|
||||
See below for ways to invoke Gramps.
|
||||
|
||||
Typical install directories in linux (Ubuntu) are:
|
||||
Typical install directories in linux (ubuntu) are:
|
||||
* /usr/local/lib/python3.4/dist-packages/gramps/ : the gramps python module
|
||||
* /usr/local/share/mime-info : mime info so gramps opens files automatically
|
||||
* /usr/local/share/icons/gnome : our icons
|
||||
|
||||
@@ -22,6 +22,9 @@ recursive-include test *
|
||||
recursive-include windows *
|
||||
|
||||
# Remove files created in the build
|
||||
exclude data/tips.xml
|
||||
exclude data/holidays.xml
|
||||
exclude po/.intltool-merge-cache
|
||||
global-exclude *.pyc
|
||||
global-exclude *.pyo
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
@@ -1,14 +1,14 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Ash Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
@@ -16,7 +16,7 @@ developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -36,10 +36,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
black #000
|
||||
gray dark #555
|
||||
@@ -47,14 +47,14 @@ gray #999
|
||||
gray light #CCC
|
||||
gray very light #EEE
|
||||
white #FFF
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
@@ -96,16 +96,6 @@ body > div {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -235,7 +225,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -261,6 +251,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -282,14 +277,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 35px;
|
||||
border: 0px;
|
||||
color: #555;
|
||||
background-color: #EEE;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -300,6 +292,7 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #EEE;
|
||||
@@ -396,41 +389,18 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
||||
table.surname td.ColumnName {
|
||||
background-color: #EEE;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #DDE;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #DDE;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #DDE;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
table.IndividualList td.ColumnSurname {
|
||||
background-color: #EEE;
|
||||
}
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #DDE;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
#Places table.infolist td.ColumnName {
|
||||
background-color: #EEE;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #DDE;
|
||||
}
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
@@ -446,10 +416,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #DDE;
|
||||
}
|
||||
#EventList td.ColumnPerson span.person:after,
|
||||
#EventList td.ColumnPerson span.father:after,
|
||||
#EventList td.ColumnPerson span.mother:after,
|
||||
@@ -470,33 +436,10 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
table.eventlist tbody tr td:first-child,
|
||||
table.eventlist thead tr th:first-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnDate {
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -548,10 +491,6 @@ table.eventlist td.ColumnPlace {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #DDE;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
@@ -621,32 +560,18 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color: #DDE;
|
||||
}
|
||||
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist th:first-child {
|
||||
width: 9em;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist th.ColumnDate {
|
||||
width: 12%;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist th.ColumnSources {
|
||||
div#families table.fixed_subtables table.eventlist th:last-child {
|
||||
width: 5em;
|
||||
}
|
||||
div#families table.attrlist td.ColumnType {
|
||||
color: black;
|
||||
}
|
||||
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
|
||||
width: 60%;
|
||||
}
|
||||
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -686,6 +611,7 @@ div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -733,15 +659,11 @@ div.snapshot div.thumbnail {
|
||||
h4 + div.grampsstylednote, a.familymap {
|
||||
margin: 1em 15px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Subsection : Family Map
|
||||
@@ -749,15 +671,6 @@ div.grampsstylednote p {
|
||||
a.familymap {
|
||||
display: block;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
}
|
||||
|
||||
/* Subsection : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -819,16 +732,10 @@ a.family_map {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
body#FamilyMap {
|
||||
background-color: #EEE !important;
|
||||
background-color: #EEE ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -847,12 +754,16 @@ table.calendar {
|
||||
background-color: white;
|
||||
border-bottom-style: none;
|
||||
padding-top: 1em;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 15px 0px 0px;
|
||||
font-weight: bold;
|
||||
color: #999;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
border-top: solid 4px #999;
|
||||
vertical-align: middle;
|
||||
@@ -861,6 +772,7 @@ table.calendar {
|
||||
/* Calendar : Date Numeral */
|
||||
.calendar div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -869,7 +781,7 @@ table.calendar {
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar td {
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
border-style: solid;
|
||||
border-color: #CCC;
|
||||
@@ -877,7 +789,7 @@ table.calendar {
|
||||
}
|
||||
.calendar td:first-child {
|
||||
border-left-style: none;
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top-style: none;
|
||||
@@ -921,6 +833,8 @@ body#fullyearlinked div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
height: 18em;
|
||||
border: solid 1px black;
|
||||
}
|
||||
@@ -937,48 +851,3 @@ body#fullyearlinked table.calendar tbody td {
|
||||
body#OneDay div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #555;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 6px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
@@ -119,16 +119,6 @@ img {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -139,6 +129,7 @@ h1 {
|
||||
h2 {
|
||||
font: bold 1em sans-serif;
|
||||
text-align: center;
|
||||
float: center;
|
||||
}
|
||||
h3 {
|
||||
font: bold italic 1.6em serif;
|
||||
@@ -348,7 +339,7 @@ div#footer p#copyright img {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -358,12 +349,6 @@ div#header::after {
|
||||
display: table;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Alphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphanav {
|
||||
@@ -416,6 +401,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -437,23 +427,22 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 60px;
|
||||
border: 0px;
|
||||
color: #FFF;
|
||||
background-color: #00029D;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
/* position: absolute; */
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #13A926;
|
||||
@@ -514,12 +503,13 @@ table.infolist tr td.ColumnRowLabel a {
|
||||
}
|
||||
table.infolist tr td.ColumnType {
|
||||
width: 6%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
table.infolist tr td.ColumnAttribute {
|
||||
width: 10%;
|
||||
}
|
||||
table.infolist tr td.ColumnValue {
|
||||
width: 30%;
|
||||
width: 40%;
|
||||
}
|
||||
table.infolist tr td.ColumnName {
|
||||
width: 30%;
|
||||
@@ -534,7 +524,7 @@ table.infolist tr td.ColumnPartner {
|
||||
table.infolist tr td.ColumnParents {
|
||||
width: 30%;
|
||||
}
|
||||
table.infolist tbody tr td.ColumnParents span.father,
|
||||
table.infolist tbody tr td.ColumnParents span.father,
|
||||
table.infolist tbody tr td.ColumnParents span.mother {
|
||||
display: block;
|
||||
}
|
||||
@@ -595,9 +585,6 @@ div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
|
||||
#familymap a.familymap {
|
||||
margin-left:20px;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/* Surnames
|
||||
----------------------------------------------------- */
|
||||
@@ -605,11 +592,11 @@ a.family_map {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
table.surnamelist thead tr th.ColumnSurname,
|
||||
table.surnamelist thead tr th.ColumnSurname,
|
||||
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||
width: 50%;
|
||||
}
|
||||
table#SortByName thead tr th.ColumnSurname,
|
||||
table#SortByName thead tr th.ColumnSurname,
|
||||
table#SortByCount thead tr th.ColumnQuantity {
|
||||
background-color: #00029D;
|
||||
color: #FFF;
|
||||
@@ -620,7 +607,7 @@ table.surnamelist thead tr th.ColumnSurname a {
|
||||
table.surnamelist thead tr th.ColumnSurname a:hover {
|
||||
color: #000;
|
||||
}
|
||||
table#SortByName thead tr th.ColumnSurname a:after,
|
||||
table#SortByName thead tr th.ColumnSurname a:after,
|
||||
table#SortByCount thead tr th.ColumnQuantity a:after {
|
||||
content: " ↓";
|
||||
}
|
||||
@@ -671,9 +658,11 @@ div#Places table.infolist tbody tr td.ColumnLongitude {
|
||||
}
|
||||
div#PlaceDetail h5 {
|
||||
font: bold .7cm serif;
|
||||
float: center;
|
||||
text-align: center;
|
||||
border-bottom: double 4px #13A926;
|
||||
}
|
||||
|
||||
|
||||
/* EventList and EventDetail
|
||||
------------------------------------------------------ */
|
||||
@@ -684,40 +673,18 @@ div#EventList, div#EventDetail {
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPlace {
|
||||
width: 25%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
vertical-align: top;
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
}
|
||||
table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#families table.infolist th.ColumnEvent {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.infolist td.ColumnAttribute {
|
||||
padding-left: 0px;
|
||||
}
|
||||
div#IndividualDetail div#families table.eventlist tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
@@ -749,7 +716,7 @@ div#EventList table.alphaevent tbody tr td.ColumnGRAMPSID {
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 50%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
@@ -774,14 +741,14 @@ div#EventDetail table.eventlist tbody tr td.ColumnAttribute {
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
#EventList table.infolist tr td a,
|
||||
#EventDetail table.infolist tr td a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.mother,
|
||||
#EventDetail table.infolist tr td span.father,
|
||||
#EventDetail table.infolist tr td span.mother {
|
||||
@@ -893,6 +860,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
}
|
||||
#GalleryDetail div#summaryarea table.gallery {
|
||||
padding-bottom: 0;
|
||||
margin: 1 .5em 0 0;
|
||||
border-style: solid;
|
||||
border-width: 2px 0 1px 0;
|
||||
border-color: #000;
|
||||
@@ -978,9 +946,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Download
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
div#Download {
|
||||
div#Download {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
}
|
||||
@@ -994,7 +962,7 @@ div#Download table.download {
|
||||
div#Download table.download tbody tr#Row02 {
|
||||
border-bottom: solid 2px #000;
|
||||
}
|
||||
div#Download table.download tbody tr td {
|
||||
div#Download table.download tbody tr td {
|
||||
border: solid 1px #000;
|
||||
text-align: left;
|
||||
}
|
||||
@@ -1018,9 +986,6 @@ div#Download table.download td.ColumnModified {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#Sources table.infolist tr td.ColumnName {
|
||||
width: 70%;
|
||||
}
|
||||
div#SourceDetail {
|
||||
min-height: 900px
|
||||
}
|
||||
@@ -1129,14 +1094,8 @@ div#events h4 {
|
||||
#IndividualDetail div#events table.eventtable {
|
||||
width: 100%;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnEvent {
|
||||
vertical-align: top;
|
||||
width: 8%;
|
||||
}
|
||||
div#RelationshipDetail table.infolist tbody tr td.ColumnAttribute,
|
||||
div#IndividualDetail table.infolist tbody tr td.ColumnAttribute {
|
||||
vertical-align: top;
|
||||
width: 10%;
|
||||
table.eventlist tbody tr td.ColumnEvent {
|
||||
width: 12%;
|
||||
}
|
||||
#IndividualDetail div#events table.infolist tbody tr td {
|
||||
padding-top: .4em;
|
||||
@@ -1223,10 +1182,6 @@ div#Families table.infolist tbody tr td.ColumnAttribute {
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue p {
|
||||
margin-top: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue {
|
||||
width: 70%;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||
margin: 0;
|
||||
@@ -1241,22 +1196,6 @@ div#families table.infolist tbody tr td.ColumnValue ol li a {
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout:fixed;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist th.ColumnDate {
|
||||
width: 12%;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist th.ColumnSources {
|
||||
width: 5em;
|
||||
}
|
||||
div#families table.fixed_subtables .Child table.eventlist .ColumnName {
|
||||
width: 60%;
|
||||
}
|
||||
div#families table.fixed_subtables .Child table.eventlist .ColumnDate {
|
||||
width: 20%;
|
||||
}
|
||||
div#families table.fixed_subtables .BeginFamily .ColumnType {
|
||||
width: 7em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* Subsection: Families: Attributes
|
||||
------------------------------------------------- */
|
||||
@@ -1273,14 +1212,17 @@ SourcesType {
|
||||
div#families table.infolist tbody tr td.Value {
|
||||
width: 15%;
|
||||
}
|
||||
div#families table.infolist tr td.Notes {
|
||||
width: 40%;
|
||||
}
|
||||
div#families table.infolist tbody tr td.Sources {
|
||||
width: 5%;
|
||||
width: 15%;
|
||||
}
|
||||
|
||||
/* Subsection: Families: LDS Ordinance
|
||||
------------------------------------------------------ */
|
||||
div#families table.infolist {
|
||||
font: normal .9em sans;
|
||||
font: normal .8em sans;
|
||||
}
|
||||
div#families table.infolist tbody tr.BeginOrdinance {
|
||||
border-top: solid 1px #000;
|
||||
@@ -1421,6 +1363,7 @@ div.Residence table.infolist tr td {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -1465,22 +1408,9 @@ div.narrative {
|
||||
font: normal .9em/1.4em sans-serif;
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 3em;
|
||||
}
|
||||
|
||||
/* Subsections : References
|
||||
----------------------------------------------------- */
|
||||
@@ -1520,9 +1450,6 @@ div#summaryarea table.infolist tr td, div#summaryarea table.infolist tr td p {
|
||||
font: normal .9em/1.2em sans-serif;
|
||||
vertical-align: top;
|
||||
}
|
||||
div#summaryarea table.infolist tr td.ColumnValue {
|
||||
width: 70%;
|
||||
}
|
||||
div#summaryarea table.infolist tr td a, div#summaryarea table.infolist tr td p a {
|
||||
display:inline;
|
||||
}
|
||||
@@ -1552,7 +1479,7 @@ table.WebLinks tbody tr td.ColumnPath {
|
||||
width: 50%;
|
||||
}
|
||||
table.weblinks tbody tr td.ColumnDescription {
|
||||
width: 80%;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
@@ -1606,7 +1533,7 @@ div#pedigree {
|
||||
/* Calendar Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
#OneDay, #WebCal, #YearGlance {
|
||||
width: 100%
|
||||
width: 95%
|
||||
}
|
||||
/* Calendar : General */
|
||||
.calendar {
|
||||
@@ -1635,10 +1562,19 @@ div#pedigree {
|
||||
color: #542;
|
||||
padding:.3em 0 .2em 0;
|
||||
background-color: #FFF;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
#CreatorInfo {
|
||||
float:right;
|
||||
color: #FFF;
|
||||
margin:-24px 10px 0 0;
|
||||
}
|
||||
#CreatorInfo a {
|
||||
color: #FFF;
|
||||
}
|
||||
#CreatorInfo a:hover {
|
||||
color: #FFF;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
.calendar thead tr th.weekday {
|
||||
font-style:italic;
|
||||
color: #000;
|
||||
@@ -1661,8 +1597,8 @@ div#pedigree {
|
||||
font-size:1.2em;
|
||||
line-height:100%;
|
||||
text-align:center;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
color: #542;
|
||||
margin:0 0 0 .5em;
|
||||
padding:.2em 0;
|
||||
background-color: #D8F3D6;
|
||||
}
|
||||
@@ -1702,12 +1638,9 @@ div#pedigree {
|
||||
display:block;
|
||||
width:92%;
|
||||
margin:0 4%;
|
||||
padding:.6em 0 .3em 0;
|
||||
padding:.2em 0 .3em 0;
|
||||
border-top: dashed 1px #000;
|
||||
}
|
||||
.calendar tbody tr td ul li:first-child {
|
||||
border-top: 10px;
|
||||
}
|
||||
|
||||
/* Calendar : Birthday, Anniversary, Highlight */
|
||||
.calendar tbody tr td ul li em {
|
||||
@@ -1725,9 +1658,9 @@ div#pedigree {
|
||||
}
|
||||
|
||||
/* Calendar : Previous-Next Month */
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.next div.date {
|
||||
color: #333;
|
||||
background-color: #D8F3D6;
|
||||
@@ -1738,10 +1671,13 @@ body#fullyearlinked {
|
||||
background-color: #FFF;
|
||||
}
|
||||
body#fullyearlinked div.content {
|
||||
width:963px;
|
||||
margin:0 auto;
|
||||
padding:15px 0 2px 2px;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float:left;
|
||||
width:320px;
|
||||
height:18em;
|
||||
border:solid 1px #000;
|
||||
}
|
||||
@@ -1756,8 +1692,10 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
padding:2px 0;
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
body#fullyearlinked table.calendar tbody tr td.emptyDays {
|
||||
height:52px;
|
||||
background-color: #FFF;
|
||||
}
|
||||
body#fullyearlinked table.calendar tbody tr td.saturday {
|
||||
@@ -1795,43 +1733,3 @@ table.oneday tbody tr td.ColumnText {
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #000290;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 3px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic - Cypress
|
||||
Style Author: Jason Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
|
||||
original 'Tranquil' stylesheet
|
||||
*******************************************************************************
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Tranquil' stylesheet
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
@@ -17,7 +16,7 @@ developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -37,10 +36,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
black #000
|
||||
slate dark #454
|
||||
@@ -48,14 +47,14 @@ slate #7C8F7C
|
||||
slate light #9DBF9D
|
||||
slate very light #E0E6E0
|
||||
white #FFF
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
@@ -97,16 +96,6 @@ body > div {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -240,7 +229,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -266,6 +255,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -287,14 +281,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 35px;
|
||||
border: 0px;
|
||||
color: #E0E6E0;
|
||||
background-color: #454;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -305,10 +296,11 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
color: #454;
|
||||
background-color: #454;
|
||||
background-color: #E0E6E0;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
@@ -377,6 +369,9 @@ td.ColumnLetter, td.ColumnRowLabel {
|
||||
td.ColumnEvent, td.ColumnDate {
|
||||
white-space: nowrap;
|
||||
}
|
||||
td.ColumnPlace, td.ColumnDescription {
|
||||
width: 20%
|
||||
}
|
||||
/* end of customizations by Stephane */
|
||||
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
|
||||
font-size: 90%;
|
||||
@@ -435,31 +430,12 @@ table.surname td.ColumnName {
|
||||
table.surname td.ColumnName > a {
|
||||
padding-left: 15px;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
table.IndividualList td.ColumnSurname {
|
||||
background-color: #E0E6E0;
|
||||
}
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
@@ -473,10 +449,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#Places table.infolist td.ColumnName > a {
|
||||
padding-left: 1ex;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
@@ -492,10 +464,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
#EventList td.ColumnPerson span.person:after,
|
||||
#EventList td.ColumnPerson span.father:after,
|
||||
#EventList td.ColumnPerson span.mother:after,
|
||||
@@ -516,49 +484,10 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
table.eventlist tbody tr td:first-child,
|
||||
table.eventlist thead tr th:first-child {
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
padding-left: 15px;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnDate,
|
||||
#families table.eventlist tbody tr td.ColumnNotes {
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist th.ColumnDate {
|
||||
padding-left: 15px;
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -613,10 +542,6 @@ table.eventlist td.ColumnPlace {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
@@ -686,10 +611,6 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color: #9DBF9D;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -741,6 +662,7 @@ div#families table.attrlist td.ColumnType {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -788,21 +710,11 @@ div.snapshot div.thumbnail {
|
||||
h4 + div.grampsstylednote, a.familymap {
|
||||
margin: 1em 15px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Subsection : Family Map
|
||||
@@ -810,9 +722,6 @@ div.grampsstylednote p {
|
||||
a.familymap {
|
||||
display: block;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Subsection : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -878,16 +787,10 @@ a.family_map {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
body#FamilyMap {
|
||||
background-color: #454 !important;
|
||||
background-color: #454 ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -906,12 +809,16 @@ table.calendar {
|
||||
background-color: white;
|
||||
border-bottom-style: none;
|
||||
padding-top: 1em;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 15px 0px 0px;
|
||||
font-weight: bold;
|
||||
color: #7C8F7C;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
border-top: solid 4px #7C8F7C;
|
||||
vertical-align: middle;
|
||||
@@ -929,7 +836,7 @@ table.calendar {
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar td {
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
border-style: solid;
|
||||
border-color: #9DBF9D;
|
||||
@@ -937,7 +844,7 @@ table.calendar {
|
||||
}
|
||||
.calendar td:first-child {
|
||||
border-left-style: none;
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top-style: none;
|
||||
@@ -985,6 +892,8 @@ body#fullyearlinked div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
height: 18em;
|
||||
border: solid 1px black;
|
||||
}
|
||||
@@ -1001,47 +910,3 @@ body#fullyearlinked table.calendar tbody td {
|
||||
body#OneDay div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #454;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 6px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic - Lilac
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the
|
||||
original 'Business' stylesheet
|
||||
*******************************************************************************
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with colors from the original 'Business' stylesheet
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
@@ -17,7 +16,7 @@ developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -37,10 +36,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
black #000
|
||||
lilac dark #2E2E61
|
||||
@@ -48,14 +47,14 @@ lilac #669
|
||||
lilac light #B4B4CB
|
||||
lilac very light #E0E0E9
|
||||
white #FAFAFF
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
@@ -97,16 +96,6 @@ body > div {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -238,7 +227,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -264,6 +253,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -285,14 +279,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 35px;
|
||||
border: 0px;
|
||||
color: #2E2E61;
|
||||
background-color: #E0E0E9;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -303,6 +294,7 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #669;
|
||||
@@ -423,31 +415,12 @@ table.surname td.ColumnName {
|
||||
table.surname td.ColumnName > a {
|
||||
padding-left: 15px;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
table.IndividualList td.ColumnSurname {
|
||||
background-color: #E0E0E9;
|
||||
}
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
@@ -464,10 +437,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#Places table.infolist td.ColumnName > a {
|
||||
padding-left: 1ex;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
@@ -483,10 +452,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
#EventList td.ColumnPerson span.person:after,
|
||||
#EventList td.ColumnPerson span.father:after,
|
||||
#EventList td.ColumnPerson span.mother:after,
|
||||
@@ -507,55 +472,10 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnDate,
|
||||
#families table.eventlist tbody tr td.ColumnNotes {
|
||||
padding-left: 20px;
|
||||
}
|
||||
table.eventlist tbody tr td:first-child,
|
||||
table.eventlist thead tr th:first-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
padding-left: 20px;
|
||||
width: 5%;
|
||||
}
|
||||
#families table.eventlist th.ColumnDate {
|
||||
padding-left: 20px;
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -610,10 +530,6 @@ table.eventlist td.ColumnPlace {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
@@ -683,10 +599,6 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -738,6 +650,7 @@ div#families table.attrlist td.ColumnType {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -785,21 +698,11 @@ div.snapshot div.thumbnail {
|
||||
h4 + div.grampsstylednote, a.familymap {
|
||||
margin: 1em 15px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Subsection : Family Map
|
||||
@@ -807,9 +710,6 @@ div.grampsstylednote p {
|
||||
a.familymap {
|
||||
display: block;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Subsection : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -874,16 +774,10 @@ a.family_map {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
body#FamilyMap {
|
||||
background-color: #E0E0E9 !important;
|
||||
background-color: #E0E0E9 ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -902,12 +796,19 @@ table.calendar {
|
||||
background-color: #FAFAFF;
|
||||
border-bottom-style: none;
|
||||
padding-top: 1em;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 15px 0px 0px;
|
||||
font-weight: bold;
|
||||
color: #669;
|
||||
}
|
||||
#CreatorInfo a[href]:hover {
|
||||
background-color: #B4B4CB;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
border-top: solid 4px #669;
|
||||
vertical-align: middle;
|
||||
@@ -925,7 +826,7 @@ table.calendar {
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar td {
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
border-style: solid;
|
||||
border-color: #B4B4CB;
|
||||
@@ -933,7 +834,7 @@ table.calendar {
|
||||
}
|
||||
.calendar td:first-child {
|
||||
border-left-style: none;
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top-style: none;
|
||||
@@ -984,6 +885,8 @@ body#fullyearlinked div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
height: 18em;
|
||||
border: solid 1px black;
|
||||
}
|
||||
@@ -1000,48 +903,3 @@ body#fullyearlinked table.calendar tbody td {
|
||||
body#OneDay div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #2E2E61;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 6px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Peach Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange
|
||||
color scheme.
|
||||
*******************************************************************************
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new orange color scheme.
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
@@ -17,7 +16,7 @@ developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -37,10 +36,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
black #36220B
|
||||
brown #8C581C
|
||||
@@ -48,14 +47,14 @@ orange dark #EA8414
|
||||
orange #FFC35E
|
||||
orange light #FFE09F
|
||||
yellow light #FFFBE7
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
@@ -97,16 +96,6 @@ body > div {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -238,7 +227,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -264,6 +253,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -285,14 +279,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 35px;
|
||||
border: 0px;
|
||||
color: #EA8414;
|
||||
background-color: #FFE09F;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -303,6 +294,7 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #FFC35E;
|
||||
@@ -423,31 +415,12 @@ table.surname td.ColumnName {
|
||||
table.surname td.ColumnName > a {
|
||||
padding-left: 15px;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
table.IndividualList td.ColumnSurname {
|
||||
background-color: #FFE09F;
|
||||
}
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
@@ -464,10 +437,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#Places table.infolist td.ColumnName > a {
|
||||
padding-left: 1ex;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
@@ -483,10 +452,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
#EventList td.ColumnPerson span.person:after,
|
||||
#EventList td.ColumnPerson span.father:after,
|
||||
#EventList td.ColumnPerson span.mother:after,
|
||||
@@ -507,57 +472,10 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
#families table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnDate,
|
||||
#families table.eventlist tbody tr td.ColumnNotes {
|
||||
padding-left: 20px;
|
||||
}
|
||||
table.eventlist tbody tr td:first-child,
|
||||
table.eventlist thead tr th:first-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -611,10 +529,6 @@ table.eventlist td.ColumnPlace {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
@@ -684,10 +598,6 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -739,6 +649,7 @@ div#families table.attrlist td.ColumnType {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -786,21 +697,11 @@ div.snapshot div.thumbnail {
|
||||
h4 + div.grampsstylednote, a.familymap {
|
||||
margin: 1em 15px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Subsection : Family Map
|
||||
@@ -808,9 +709,6 @@ div.grampsstylednote p {
|
||||
a.familymap {
|
||||
display: block;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Subsection : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -875,17 +773,11 @@ a.family_map {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
button#drop {
|
||||
background-color: #FFE09F;
|
||||
border: solid 1px #EA8414 !important;
|
||||
border: solid 1px #EA8414 ! important;
|
||||
}
|
||||
button#drop:hover {
|
||||
background-color: #FFC35E;
|
||||
@@ -913,12 +805,19 @@ table.calendar {
|
||||
background-color: #FFFBE7;
|
||||
border-bottom-style: none;
|
||||
padding-top: 1em;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 15px 0px 0px;
|
||||
font-weight: bold;
|
||||
color: #8C581C;
|
||||
}
|
||||
#CreatorInfo a[href]:hover {
|
||||
background-color: #FFC35E;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
border-top: solid 4px #8C581C;
|
||||
vertical-align: middle;
|
||||
@@ -927,6 +826,7 @@ table.calendar {
|
||||
/* Calendar : Date Numeral */
|
||||
.calendar div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #FFC35E;
|
||||
@@ -935,7 +835,7 @@ table.calendar {
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar td {
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
border-style: solid;
|
||||
border-color: #FFC35E;
|
||||
@@ -943,7 +843,7 @@ table.calendar {
|
||||
}
|
||||
.calendar td:first-child {
|
||||
border-left-style: none;
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top-style: none;
|
||||
@@ -994,6 +894,8 @@ body#fullyearlinked div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
height: 18em;
|
||||
border: solid 1px #36220B;
|
||||
}
|
||||
@@ -1010,48 +912,3 @@ body#fullyearlinked table.calendar tbody td {
|
||||
body#OneDay div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #EA8414;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 6px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Basic-Spruce Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue
|
||||
color scheme.
|
||||
*******************************************************************************
|
||||
Note: Adapted from GRAMPS original Modern Style stylesheet with a new blue color scheme.
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
@@ -17,7 +16,7 @@ developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -38,10 +37,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
black #000
|
||||
blue dark #204D91
|
||||
@@ -49,14 +48,14 @@ blue #7CA3DD
|
||||
blue light #BFD0EA
|
||||
blue very light #EAEEF4
|
||||
white #FFF
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
@@ -98,16 +97,6 @@ body > div {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
@@ -239,7 +228,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -265,6 +254,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -286,14 +280,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 35px;
|
||||
border: 0px;
|
||||
color: #204D91;
|
||||
background-color: #EAEEF4;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -304,6 +295,7 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #EEE;
|
||||
@@ -424,31 +416,12 @@ table.surname td.ColumnName {
|
||||
table.surname td.ColumnName > a {
|
||||
padding-left: 15px;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
table.IndividualList td.ColumnSurname {
|
||||
background-color: #EAEEF4;
|
||||
}
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #EAEEF4;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
@@ -465,10 +438,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#Places table.infolist td.ColumnName > a {
|
||||
padding-left: 1ex;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
@@ -484,10 +453,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
#EventList td.ColumnPerson span.person:after,
|
||||
#EventList td.ColumnPerson span.father:after,
|
||||
#EventList td.ColumnPerson span.mother:after,
|
||||
@@ -508,57 +473,10 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
#families table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnDate,
|
||||
#families table.eventlist tbody tr td.ColumnNotes {
|
||||
padding-left: 20px;
|
||||
}
|
||||
table.eventlist tbody tr td:first-child,
|
||||
table.eventlist thead tr th:first-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
}
|
||||
table.eventlist td.ColumnEvent,
|
||||
table.eventlist td.ColumnDate,
|
||||
table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -612,10 +530,6 @@ table.eventlist td.ColumnPlace {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
@@ -685,10 +599,6 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -740,6 +650,7 @@ div#families table.attrlist td.ColumnType {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -787,21 +698,11 @@ div.snapshot div.thumbnail {
|
||||
h4 + div.grampsstylednote, a.familymap {
|
||||
margin: 1em 15px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* Subsection : Family Map
|
||||
@@ -809,9 +710,6 @@ div.grampsstylednote p {
|
||||
a.familymap {
|
||||
display: block;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Subsection : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -876,16 +774,10 @@ a.family_map {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
body#FamilyMap {
|
||||
background-color: #EAEEF4 !important;
|
||||
background-color: #EAEEF4 ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -904,12 +796,19 @@ table.calendar {
|
||||
background-color: #FFF;
|
||||
border-bottom-style: none;
|
||||
padding-top: 1em;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 15px 0px 0px;
|
||||
font-weight: bold;
|
||||
color: #7CA3DD;
|
||||
}
|
||||
#CreatorInfo a[href]:hover {
|
||||
background-color: #BFD0EA;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
border-top: solid 4px #7CA3DD;
|
||||
vertical-align: middle;
|
||||
@@ -927,7 +826,7 @@ table.calendar {
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar td {
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
border-width: 1px 0px 0px 1px;
|
||||
border-style: solid;
|
||||
border-color: #BFD0EA;
|
||||
@@ -935,7 +834,7 @@ table.calendar {
|
||||
}
|
||||
.calendar td:first-child {
|
||||
border-left-style: none;
|
||||
padding: 0px 5px 0px 1ex;
|
||||
padding: 0px 0px 0px 1ex;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top-style: none;
|
||||
@@ -986,6 +885,8 @@ body#fullyearlinked div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
height: 18em;
|
||||
border: solid 1px black;
|
||||
}
|
||||
@@ -1002,48 +903,3 @@ body#fullyearlinked table.calendar tbody td {
|
||||
body#OneDay div.content {
|
||||
overflow: hidden;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #204D91;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 6px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
@@ -77,7 +77,8 @@ ul#dropmenu li:hover > a {
|
||||
color: #fafafa
|
||||
}
|
||||
|
||||
*html ul#dropmenu li a:hover /* IE6 */ {
|
||||
*html ul#dropmenu li a:hover /* IE6 */
|
||||
{
|
||||
color: #fafafa
|
||||
}
|
||||
ul#dropmenu li:hover > ul {
|
||||
@@ -128,11 +129,13 @@ ul#dropmenu ul a {
|
||||
float: none;
|
||||
text-transform: none;
|
||||
}
|
||||
*html ul#dropmenu ul a /* IE6 */ {
|
||||
*html ul#dropmenu ul a /* IE6 */
|
||||
{
|
||||
height: 10px;
|
||||
width: 150px;
|
||||
}
|
||||
*:first-child+html ul#dropmenu ul a /* IE7 */ {
|
||||
*:first-child+html ul#dropmenu ul a /* IE7 */
|
||||
{
|
||||
height: 10px;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
@@ -58,7 +58,7 @@ Middle Light images/Web_Mainz_MidLight.png
|
||||
|
||||
|
||||
NarrativeWeb Styles
|
||||
----------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
-----------------------------------------------------------------*/
|
||||
@@ -69,6 +69,7 @@ body {
|
||||
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
|
||||
}
|
||||
body > div {
|
||||
width: 85%;
|
||||
margin: 0px auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -99,18 +100,9 @@ div.snapshot a {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* General Text
|
||||
-----------------------------------------------------------------*/
|
||||
h1 {
|
||||
@@ -150,8 +142,7 @@ a {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #D8C19F;
|
||||
font-style: italic;
|
||||
background-color: #FFFFE7;
|
||||
}
|
||||
.grampsid {
|
||||
font-family: monospace;
|
||||
@@ -168,7 +159,7 @@ a[href]:hover, a[href]:active {
|
||||
/* Navigation
|
||||
-----------------------------------------------------------------*/
|
||||
div#nav, #subnavigation {
|
||||
background: url(../images/Web_Mainz_Mid.png) repeat-x top left;
|
||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6 repeat;
|
||||
}
|
||||
div#nav ul, #subnavigation ul {
|
||||
list-style-type: none;
|
||||
@@ -234,7 +225,7 @@ div#alphanav ul li a:hover {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -260,6 +251,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -281,14 +277,11 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 80px;
|
||||
border: 0px;
|
||||
color: #7D5925;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -299,8 +292,8 @@ div#nav::after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
height:1.4em;
|
||||
text-align: left;
|
||||
background-color: #D8C19F;
|
||||
/* required by IE */
|
||||
@@ -384,40 +377,12 @@ table#SortByName thead th.ColumnSurname a:after,
|
||||
table#SortByCount thead th.ColumnQuantity a:after {
|
||||
content: " \2193";
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
table#SortByName tbody tr:hover,
|
||||
table#SortByCount tbody tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
table.surname tbody tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
#SurnameDetail h3 {
|
||||
border-bottom-width: 0px;
|
||||
padding-bottom: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
#parents table.infolist tbody tr:hover,
|
||||
table.IndividualList tbody tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
|
||||
/* Places
|
||||
----------------------------------------------------- */
|
||||
#Places table.infolist tbody tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
/* Events
|
||||
-----------------------------------------------------------------*/
|
||||
#EventList tr.BeginType td {
|
||||
@@ -431,10 +396,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventList td.ColumnPerson a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tbody tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
/* Family events, put mother on next line */
|
||||
#EventList td.ColumnPerson span.father,
|
||||
#EventList td.ColumnPerson span.mother,
|
||||
@@ -458,57 +419,9 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
#EventDetail td.ColumnPerson span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 25px;
|
||||
}
|
||||
#families table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#families table.eventlist tbody tr td.ColumnDate,
|
||||
#families table.eventlist tbody tr td.ColumnNotes {
|
||||
padding-left: 25px;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnEvent {
|
||||
padding-right: 0px;
|
||||
width: 8%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnDate {
|
||||
padding-right: 0px;
|
||||
width: 15%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
@@ -569,10 +482,6 @@ table.IndividualList tr:hover td.ColumnSurname {
|
||||
div#SourceDetail {
|
||||
margin: 0 auto;
|
||||
}
|
||||
#Sources table.infolist tbody tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
-----------------------------------------------------------------*/
|
||||
@@ -639,10 +548,6 @@ div#SourceDetail {
|
||||
|
||||
/* SubSection : Families
|
||||
-----------------------------------------------------------------*/
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tbody tr:hover,
|
||||
table.relationships tr:hover td {
|
||||
background-color: #D8C19F;
|
||||
}
|
||||
div#families table.fixed_subtables table.eventlist {
|
||||
table-layout: fixed;
|
||||
}
|
||||
@@ -661,6 +566,9 @@ div#families .infolist h4 {
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
@@ -685,6 +593,7 @@ div#families .infolist h4 {
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #7D5925;
|
||||
@@ -695,6 +604,7 @@ div#families .infolist h4 {
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -736,24 +646,11 @@ h4 + div.grampsstylednote, a.familymap {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 10px;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0 0 0.3em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
/* SubSection : Source References
|
||||
@@ -821,22 +718,16 @@ div.grampsstylednote p {
|
||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
-----------------------------------------------------------------*/
|
||||
button#drop {
|
||||
font-style: italic;
|
||||
color: #FFF2C6;
|
||||
background: url(../images/Web_Mainz_Bkgd.png) #7D5925 repeat;
|
||||
border: outset 3px black !important;
|
||||
border: outset 3px black ! important;
|
||||
}
|
||||
div#map_canvas {
|
||||
border-color: #7D5925 !important;
|
||||
border-color: #7D5925 ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
@@ -856,24 +747,28 @@ table.calendar {
|
||||
.calendar thead th.monthName {
|
||||
font-size: xx-large;
|
||||
color: #767D25;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
border-bottom-style: none;
|
||||
border-bottom-color: #7D5925;
|
||||
}
|
||||
.calendar thead th abbr {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float: right;
|
||||
margin: -1em 0px 0px 0px;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
.calendar tfoot td {
|
||||
border-top: double 4px #7D5925;
|
||||
}
|
||||
|
||||
/* Calendar : Date Numeral */
|
||||
.calendar div.date {
|
||||
width: 1.5em;
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
margin-top: 1px;
|
||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6 repeat;
|
||||
}
|
||||
|
||||
@@ -917,11 +812,10 @@ table.calendar {
|
||||
color: #767D25;
|
||||
}
|
||||
.calendar td ul li span.yearsmarried em {
|
||||
color: #767D25;
|
||||
color: black;
|
||||
}
|
||||
.calendar td.highlight div.date {
|
||||
color: #767D25;
|
||||
margin-top: 1px;
|
||||
background-image: none;
|
||||
background-color: #FFFFE7;
|
||||
}
|
||||
@@ -934,6 +828,8 @@ table.calendar {
|
||||
|
||||
/* Calendar : Full Year */
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 315px;
|
||||
height: 18em;
|
||||
border: solid 1px #7D5925;
|
||||
}
|
||||
@@ -946,58 +842,3 @@ body#fullyearlinked table.calendar thead th.monthName {
|
||||
body#fullyearlinked table.calendar tbody td {
|
||||
height: 3em;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
text-align: center;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
padding: 2px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #7D5925;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
padding-left: 8px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td.previous .date:hover,
|
||||
body#fullyearlinked #YearGlance tbody td.next .date:hover {
|
||||
border-radius: 10px;
|
||||
border: 5px solid;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td div.empty .date:hover {
|
||||
border-radius: 10px;
|
||||
border: 5px solid;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td.highlight .date:hover {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Nebraska Default Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
@@ -34,10 +34,10 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
brown darkest #453619
|
||||
brown dark #542
|
||||
brown #A97
|
||||
@@ -45,14 +45,14 @@ brown light #C1B398
|
||||
brown lightest #F6F2EE
|
||||
gray #696969
|
||||
green #5D835F
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
---------------------------------------------------------------------------- */
|
||||
----------------------------------------------------- */
|
||||
|
||||
body {
|
||||
color:#000;
|
||||
@@ -118,16 +118,6 @@ img {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media only screen and (width > 1080px) {
|
||||
body#fullyearlinked table.calendar {
|
||||
float: left;
|
||||
width: 33.3%;
|
||||
}
|
||||
}
|
||||
.fullclear {
|
||||
width:100%;
|
||||
@@ -172,7 +162,7 @@ p#description {
|
||||
background-color:#FFF;
|
||||
}
|
||||
p a {
|
||||
color:#542;
|
||||
color:#FFF;
|
||||
text-decoration:underline;
|
||||
}
|
||||
sup {
|
||||
@@ -284,7 +274,7 @@ div#subnavigation ul li.CurrentSection a {
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
display: none;
|
||||
color: #FFF;
|
||||
}
|
||||
@@ -311,6 +301,11 @@ div#nav::after {
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
@@ -332,14 +327,12 @@ div#nav::after {
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
button.navIcon {
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
font-size:2.9em;
|
||||
line-height: 70px;
|
||||
border: 0px;
|
||||
background-color: #542;
|
||||
color: #FFF;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
@@ -355,6 +348,7 @@ div#nav::after {
|
||||
background-color: #A97;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #A97;
|
||||
@@ -458,20 +452,6 @@ table.surnamelist tr th a, table.surnamelist tr th a:visited {
|
||||
table.surnamelist tr th:hover {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
table#SortByName tr:hover td.ColumnSurname,
|
||||
table#SortByCount tr:hover td.ColumnQuantity {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
table#SortByName tr:hover,
|
||||
table#SortByCount tr:hover,
|
||||
table#SortByName tr:hover td.ColumnQuantity,
|
||||
table#SortByCount tr:hover td.ColumnSurname {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
table.surname tr:hover,
|
||||
table.surname tr:hover td.ColumnName {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
table.surnamelist thead tr th.ColumnLetter {
|
||||
padding-left:20px;
|
||||
padding-right:10px;
|
||||
@@ -527,11 +507,6 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
#parents table.infolist tr:hover,
|
||||
table.IndividualList tr:hover,
|
||||
table.IndividualList tr:hover td.ColumnSurname {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#Individuals { }
|
||||
#Individuals table.IndividualList {
|
||||
border-bottom:solid 1px #A97;
|
||||
@@ -575,7 +550,6 @@ table.IndividualList tbody tr td.ColumnName a:hover {
|
||||
#IndividualDetail div table.infolist tr td {
|
||||
font:normal .9em/1.2em sans-serif;
|
||||
vertical-align:top;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#IndividualDetail div table.infolist tr td a {
|
||||
display:inline;
|
||||
@@ -588,15 +562,11 @@ table.IndividualList tbody tr td.ColumnName a:hover {
|
||||
color:#696969;
|
||||
}
|
||||
#IndividualDetail div.subsection table tr td:first-child {
|
||||
color:#696969;
|
||||
padding-left:20px;
|
||||
}
|
||||
#familymap a.familymap {
|
||||
margin-left:20px;
|
||||
}
|
||||
a.family_map {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
@@ -629,10 +599,6 @@ table.attrlist tbody tr td.ColumnSources {
|
||||
|
||||
/* Sources
|
||||
----------------------------------------------------- */
|
||||
#Sources table.infolist tr:hover,
|
||||
#Sources table.infolist tr:hover td.ColumnType {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#Sources { }
|
||||
#Sources table.infolist tbody tr td.ColumnRowLabel {
|
||||
padding-bottom:0;
|
||||
@@ -681,10 +647,6 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
#Places table.infolist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
}
|
||||
#Places table.infolist tr:hover,
|
||||
#Places table.infolist tr:hover td.ColumnName {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#Places table.infolist tbody tr td.ColumnName a {
|
||||
padding:.1em 10px .3em 10px;
|
||||
}
|
||||
@@ -704,11 +666,7 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
#EventDetail table.infolist tr td a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr:hover,
|
||||
#EventList table.infolist tr:hover td.ColumnType {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.mother,
|
||||
#EventDetail table.infolist tr td span.father,
|
||||
#EventDetail table.infolist tr td span.mother {
|
||||
@@ -730,27 +688,10 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
#EventDetail table.infolist tr td span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#IndividualDetail div table.eventlist tbody tr td:first-child,
|
||||
#IndividualDetail div table.eventlist thead tr th:first-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
#IndividualDetail div table.eventlist tbody tr td.ColumnSources {
|
||||
padding-left: 5px;
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist tbody tr td.ColumnEvent {
|
||||
padding-right: 0px;
|
||||
width: 8%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist tbody tr td.ColumnDate {
|
||||
padding-left: 10px;
|
||||
width: 15%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -902,9 +843,9 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
/* Download
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
#Download {
|
||||
#Download {
|
||||
padding:1cm;
|
||||
height:396px;
|
||||
}
|
||||
@@ -924,7 +865,7 @@ table.download thead tr th {
|
||||
table.download tbody tr#Row02 {
|
||||
border-bottom:solid 2px #000;
|
||||
}
|
||||
table.download thead tr th, table.download tbody tr td {
|
||||
table.download thead tr th, table.download tbody tr td {
|
||||
padding-left:10px;
|
||||
padding-top:20px;
|
||||
border-style:solid;
|
||||
@@ -1027,6 +968,9 @@ div#events h4 {
|
||||
padding-bottom:4px;
|
||||
background-color:#A97;
|
||||
}
|
||||
#IndividualDetail div#events table.infolist thead tr th:first-child {
|
||||
padding-left:20px;
|
||||
}
|
||||
#IndividualDetail div#events table.infolist tbody tr td {
|
||||
padding-top:.4em;
|
||||
padding-bottom:.8em;
|
||||
@@ -1042,51 +986,6 @@ table.infolist tbody tr td.ColumnValue p {
|
||||
color:#696969;
|
||||
margin:.2em 0 0 2em;
|
||||
}
|
||||
#attributes table.infolist td.ColumnType {
|
||||
width: 10%;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#attributes table.infolist td.ColumnValue {
|
||||
width: 15%;
|
||||
}
|
||||
#attributes table.infolist td.ColumnSources {
|
||||
width: 5%;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#WebLinks table.weblinks tbody tr td:first-child {
|
||||
vertical-align:middle;
|
||||
}
|
||||
#WebLinks table.weblinks td.ColumnType,
|
||||
#WebLinks table.weblinks td.ColumnDescription {
|
||||
}
|
||||
#events table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist th.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#families table.eventlist td.ColumnEvent,
|
||||
#families table.eventlist td.ColumnDate,
|
||||
#families table.eventlist td.ColumnPlace,
|
||||
#families table.eventlist td.ColumnDescription,
|
||||
#families table.eventlist td.ColumnSources {
|
||||
padding-top:.4em;
|
||||
padding-bottom:.8em;
|
||||
}
|
||||
#families table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
#families table.eventlist td.ColumnNotes {
|
||||
font:normal 1.1em/1.4em sans-serif;
|
||||
}
|
||||
#families table.eventlist tbody tr td:first-child,
|
||||
#families table.eventlist thead tr th:first-child {
|
||||
width: 10%;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
/* Subsections : Attributes
|
||||
----------------------------------------------------- */
|
||||
@@ -1109,15 +1008,10 @@ div#parents table.infolist tbody tr td.ColumnValue ol li {
|
||||
|
||||
/* Subsections : Families
|
||||
----------------------------------------------------- */
|
||||
#families table.infolist td.ColumnValue.Child table.infolist tr:hover,
|
||||
table.relationships tr:hover {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
div#families table.infolist {
|
||||
margin-top:.5em;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue p {
|
||||
margin-left:0;
|
||||
margin-top:0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||
@@ -1165,6 +1059,9 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
@@ -1187,10 +1084,11 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
float:left;
|
||||
width:130px;
|
||||
text-align:center;
|
||||
background-color: #F6F2EE;
|
||||
background-color: white;
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
@@ -1253,26 +1151,16 @@ div.snapshot div.thumbnail {
|
||||
div.narrative {
|
||||
padding-bottom:0;
|
||||
}
|
||||
i.NoteType {
|
||||
font-weight: bold;
|
||||
font-size: .8em;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
div.grampsstylednote p {
|
||||
padding-bottom: 0.6em;
|
||||
}
|
||||
.narrative p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
font:normal .9em/1.4em sans-serif;
|
||||
}
|
||||
|
||||
/* Subsection : References
|
||||
/* Subsections : References
|
||||
----------------------------------------------------- */
|
||||
#references ol {
|
||||
margin-left: 3em;
|
||||
}
|
||||
|
||||
/* Subsections : Source References
|
||||
----------------------------------------------------- */
|
||||
@@ -1414,12 +1302,6 @@ div#pedigree {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Updates
|
||||
----------------------------------------------------- */
|
||||
#Updates table.list td.date {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
/* Calendar : General */
|
||||
@@ -1454,15 +1336,18 @@ body#WebCal {
|
||||
color:#542;
|
||||
padding:.3em 0 .2em 0;
|
||||
background-color:#FFF;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
#CreatorInfo {
|
||||
float:right;
|
||||
color:#FFF;
|
||||
margin:-24px 10px 0 0;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
.calendar thead tr th.weekday {
|
||||
color:#542;
|
||||
background-color:#A97;
|
||||
}
|
||||
.calendar thead tr th.saturday,
|
||||
.calendar thead tr th.saturday,
|
||||
.calendar thead tr th.sunday { }
|
||||
.calendar tfoot tr td {
|
||||
padding:.7em 5% 1em 5%;
|
||||
@@ -1476,12 +1361,14 @@ body#WebCal {
|
||||
|
||||
/* Calendar : Date Numeral */
|
||||
.calendar tbody tr td div.date {
|
||||
float:none;
|
||||
float:right;
|
||||
display:block;
|
||||
width:1.8em;
|
||||
font-size:1.2em;
|
||||
line-height:100%;
|
||||
text-align:center;
|
||||
color:#542;
|
||||
margin:0 0 0 .5em;
|
||||
padding:.2em 0;
|
||||
background-color:#F6F2EE;
|
||||
}
|
||||
@@ -1544,25 +1431,26 @@ body#WebCal {
|
||||
.calendar tbody tr td.highlight div.date {
|
||||
color:#0A65B5;
|
||||
background-color:#C2E1FE;
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
|
||||
/* Calendar : Previous-Next Month */
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.next div.date {
|
||||
color:#A97;
|
||||
background-color:#F6F2EE;
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
|
||||
/* Calendar : Full Year */
|
||||
body#fullyearlinked div.content {
|
||||
width:963px;
|
||||
margin:0 auto;
|
||||
padding:5px 0 2px 2px;
|
||||
padding:15px 0 2px 2px;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float:left;
|
||||
width:320px;
|
||||
height:18em;
|
||||
border:solid 1px #7D5925;
|
||||
}
|
||||
@@ -1576,59 +1464,3 @@ body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
||||
body#OneDay h3 {
|
||||
font-size: xx-large;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
#WebCal table.calendar tfoot {
|
||||
display: none;
|
||||
}
|
||||
#WebCal table.calendar tr td {
|
||||
word-wrap: break-word;
|
||||
border-bottom:solid 1px #7D5925;
|
||||
border-right:solid 1px #7D5925;
|
||||
padding-left: 0px;
|
||||
}
|
||||
#WebCal .calendar tr td .empty {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable {
|
||||
border: 5px solid rgba(255,255,255,.0);
|
||||
}
|
||||
#WebCal .calendar tr td .clickable:hover {
|
||||
display: block;
|
||||
overflow:auto;
|
||||
word-wrap: break-word;
|
||||
cursor: text;
|
||||
border-radius: 10px 0px 10px 10px;
|
||||
border: 5px solid #453619;
|
||||
padding: 0px;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td {
|
||||
height:48px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td.previous {
|
||||
border-width:0px 1px 1px 0px;
|
||||
border-color:#C1B398;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td.next {
|
||||
border-width:1px 0px 0px 1px;
|
||||
border-color:#C1B398;
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td .date {
|
||||
font-size: 30px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
border-radius: 45px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
float: none;
|
||||
border: 5px solid rgba(0,0,0,.0);
|
||||
}
|
||||
body#fullyearlinked #YearGlance tbody td:hover .date {
|
||||
border-radius: 45px;
|
||||
border: 5px solid;
|
||||
}
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Print Style Sheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Modified by Rob G. Healey, July 2008
|
||||
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
'Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
@@ -31,21 +31,21 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
gray #A7A7A7
|
||||
red #520
|
||||
black #000
|
||||
white #FFF
|
||||
-------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
|
||||
body {
|
||||
@@ -419,7 +419,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
#researcher {
|
||||
margin:16pt 0 0 0;
|
||||
@@ -456,13 +456,13 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
clear:left;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Download, #Contact {
|
||||
padding:3em 20px;
|
||||
}
|
||||
|
||||
/* Subsections : Events
|
||||
/* Subsections : Events
|
||||
----------------------------------------------------- */
|
||||
#IndividualDetail .ColumnValue {
|
||||
padding:4pt 0;
|
||||
@@ -472,7 +472,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
margin:1pt 0 0 18pt;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
#indivgallery h4 {
|
||||
margin-bottom:1em;
|
||||
@@ -532,7 +532,7 @@ table.attrlist tbody tr td.ColumnSources {
|
||||
width: 10%;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
#pedigree a {
|
||||
text-decoration:none;
|
||||
@@ -574,7 +574,7 @@ table.attrlist tbody tr td.ColumnSources {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
@@ -674,7 +674,7 @@ p#createdate {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
/* Calendar Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
/* Calendar : General */
|
||||
body#WebCal h1#SiteTitle {
|
||||
@@ -719,6 +719,10 @@ body#WebCal h1#SiteTitle {
|
||||
padding:5pt;
|
||||
border-width:0;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float:right;
|
||||
margin:0 10px 0 0;
|
||||
}
|
||||
body#WebCal a {
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
@@ -791,9 +795,9 @@ body#WebCal a {
|
||||
}
|
||||
|
||||
/* Calendar : Previous-Next Month */
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.next div.date {
|
||||
font-weight:normal;
|
||||
font-size:12pt;
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
@@ -20,18 +20,17 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Web_Navigation-Vertical.css Stylesheet
|
||||
*******************************************************************************
|
||||
***************************************************************************************************
|
||||
|
||||
# $Id: Web_Navigation-Vertical.css 15241 2010-04-19 11:07:00Z robhealey1 $
|
||||
|
||||
Body Element
|
||||
----------------------------------------------------- */
|
||||
body {
|
||||
background: -webkit-gradient (linear, left top, left bottom,
|
||||
from(#ccc), to(#fff));
|
||||
body { background: -webkit-gradient
|
||||
(linear, left top, left bottom, from(#ccc), to(#fff));
|
||||
color: #000;
|
||||
padding: 60px 0px 0px 146px;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
@@ -20,15 +20,15 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
*******************************************************************************
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Visually Impaired Stylesheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
*******************************************************************************
|
||||
***************************************************************************************************
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
Color Palette
|
||||
-------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------------
|
||||
brown dark #453619, #542
|
||||
brown light #C1B398
|
||||
gray #696969
|
||||
@@ -47,7 +47,7 @@ Females Web_Gender_Female.png
|
||||
|
||||
|
||||
NarrativeWeb Styles
|
||||
---------------------------------------------------------------------------- */
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
div#alphabet ul li {
|
||||
background-color: #6AF364;
|
||||
}
|
||||
@@ -96,6 +96,8 @@ img {
|
||||
background:none;
|
||||
}
|
||||
.content {
|
||||
overflow: auto;
|
||||
width:965px;
|
||||
margin:0 auto;
|
||||
padding-bottom: .2em;
|
||||
}
|
||||
@@ -347,7 +349,7 @@ table.infolist tbody tr td.ColumnPartner a {
|
||||
table.infolist tbody tr td.ColumnParents {
|
||||
font-size:.9em;
|
||||
}
|
||||
table.infolist tbody tr td.ColumnParents span.father,
|
||||
table.infolist tbody tr td.ColumnParents span.father,
|
||||
table.infolist tbody tr td.ColumnParents span.mother {
|
||||
display:block;
|
||||
}
|
||||
@@ -364,7 +366,7 @@ table.infolist tbody tr td.ColumnParents span.mother:before {
|
||||
#SurnameDetail p#description {
|
||||
padding-top:0;
|
||||
}
|
||||
table.surnamelist thead tr th.ColumnSurname,
|
||||
table.surnamelist thead tr th.ColumnSurname,
|
||||
#Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||
width:50%;
|
||||
}
|
||||
@@ -389,11 +391,11 @@ table.surnamelist tbody tr td.ColumnLetter a {
|
||||
table.surnamelist tbody tr td.ColumnSurname {
|
||||
background-color: #FFF;
|
||||
}
|
||||
table#SortByName thead tr th.ColumnSurname,
|
||||
table#SortByName thead tr th.ColumnSurname,
|
||||
table#SortByCount thead tr th.ColumnQuantity {
|
||||
background-color: #C1B398;
|
||||
}
|
||||
table#SortByName thead tr th.ColumnSurname a:after,
|
||||
table#SortByName thead tr th.ColumnSurname a:after,
|
||||
table#SortByCount thead tr th.ColumnQuantity a:after {
|
||||
content:" ↓";
|
||||
}
|
||||
@@ -441,7 +443,7 @@ table.surname tbody tr td.ColumnPartner a {
|
||||
display:block;
|
||||
padding:.6em 10px .6em 0px;
|
||||
}
|
||||
table.surname thead tr th.ColumnParents,
|
||||
table.surname thead tr th.ColumnParents,
|
||||
table.surname tbody tr td.ColumnParents {
|
||||
width:25%;
|
||||
}
|
||||
@@ -463,7 +465,7 @@ div#Individuals table.IndividualList tbody tr td a {
|
||||
display: block;
|
||||
padding: .6em 10px;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
cursor:default;
|
||||
color: #000;
|
||||
@@ -664,7 +666,7 @@ div#EventList table.alphaevent tbody tr td.ColumnDate {
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson {
|
||||
width: 60%;
|
||||
}
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.father,
|
||||
div#EventList table.alphaevent tbody tr td.ColumnPerson span.mother {
|
||||
display:block;
|
||||
}
|
||||
@@ -694,7 +696,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||
background-color: #D8F3D6;
|
||||
}
|
||||
|
||||
|
||||
/* Events
|
||||
----------------------------------------------------- */
|
||||
#EventList table.infolist tr.BeginType td {
|
||||
@@ -707,7 +709,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||
#EventDetail table.infolist tr td a {
|
||||
display: inline;
|
||||
}
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.father,
|
||||
#EventList table.infolist tr td span.mother,
|
||||
#EventDetail table.infolist tr td span.father,
|
||||
#EventDetail table.infolist tr td span.mother {
|
||||
@@ -729,20 +731,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnPerson {
|
||||
#EventDetail table.infolist tr td span.mother:last-child:after {
|
||||
content: "";
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnDate {
|
||||
width: 15%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnEvent {
|
||||
width: 8%;
|
||||
}
|
||||
#IndividualDetail div table.eventlist td.ColumnEvent,
|
||||
#IndividualDetail div table.eventlist td.ColumnDate,
|
||||
#IndividualDetail div table.eventlist td.ColumnPlace {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
@@ -911,7 +899,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
/* Download
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
div#Download {
|
||||
margin: 0;
|
||||
@@ -924,7 +912,7 @@ div#Download table.download {
|
||||
div#Download table.download tbody tr#Row02 {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
div#Download table.download tbody tr td {
|
||||
div#Download table.download tbody tr td {
|
||||
border: solid 1px #000;
|
||||
text-align: left;
|
||||
padding: 5px 0px 5px 0px;
|
||||
@@ -1209,7 +1197,6 @@ div#families table.infolist tbody tr td.ColumnValue {
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue p {
|
||||
margin-top:0;
|
||||
margin-left:0;
|
||||
}
|
||||
div#families table.infolist tbody tr td.ColumnValue ol {
|
||||
margin:0;
|
||||
@@ -1499,10 +1486,19 @@ body#WebCal {
|
||||
color: #542;
|
||||
padding:.3em 0 .2em 0;
|
||||
background-color: #FFF;
|
||||
vertical-align: top;
|
||||
height: 2em;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
#CreatorInfo {
|
||||
float:right;
|
||||
color: #FFF;
|
||||
margin:-24px 10px 0 0;
|
||||
}
|
||||
#CreatorInfo a {
|
||||
color: #FFF;
|
||||
}
|
||||
#CreatorInfo a:hover {
|
||||
color: #FFF;
|
||||
}
|
||||
.calendar thead tr th.weekend,
|
||||
.calendar thead tr th.weekday {
|
||||
font-style:italic;
|
||||
color: #000;
|
||||
@@ -1594,9 +1590,9 @@ body#WebCal {
|
||||
}
|
||||
|
||||
/* Calendar : Previous-Next Month */
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.next div.date {
|
||||
color: #333;
|
||||
background-color: #D8F3D6;
|
||||
@@ -1662,7 +1658,7 @@ table.oneday tbody tr td.ColumnText {
|
||||
width: 85%;
|
||||
}
|
||||
table.oneday tbody tr td.ColumnEvent {
|
||||
width: 10%;
|
||||
width; 10%;
|
||||
}
|
||||
|
||||
/* PlaceMaps
|
||||
|
||||
@@ -33,14 +33,13 @@ Unknown #000
|
||||
===== Web Graphics =====
|
||||
Males Web_Gender_Male.png
|
||||
Females Web_Gender_Female.png
|
||||
# -------------------------------------------------------------------------- */
|
||||
# -------------------------------------------------------------------------- #
|
||||
/* Subsections : Ancestors Tree -------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
overflow-x:auto;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
|
||||
@@ -31,7 +31,7 @@ body#FamilyMap {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
border: solid 4px #000;
|
||||
margin: 20px auto;
|
||||
margin: 0px auto;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
max-width: 90%;
|
||||
@@ -64,106 +64,5 @@ div#FamilyMapDetail div#references table.infolist {
|
||||
width: 100%;
|
||||
}
|
||||
div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
|
||||
/* Subsection: popup
|
||||
------------------------------------------------------ */
|
||||
#map_canvas .ol-popup {
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||
filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||
padding: 5px;
|
||||
border-radius: 8px;
|
||||
border: 2px solid #111111;
|
||||
bottom: 8px;
|
||||
left: -10px;
|
||||
min-width: 500px;
|
||||
}
|
||||
#map_canvas .ol-popup:after, #map_canvas .ol-popup:before {
|
||||
top: 100%;
|
||||
border: solid transparent;
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
#map_canvas .ol-popup:after {
|
||||
border-top-color: white;
|
||||
border-width: 10px;
|
||||
left: 48px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
#map_canvas .ol-popup:before {
|
||||
border-top-color: #cccccc;
|
||||
border-width: 11px;
|
||||
left: 48px;
|
||||
margin-left: -11px;
|
||||
}
|
||||
#map_canvas .ol-popup-closer {
|
||||
text-decoration: none;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 8px;
|
||||
}
|
||||
#map_canvas .ol-popup-title {
|
||||
background-color: #ededed;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
#map_canvas .ol-popup-content {
|
||||
color: #111;
|
||||
font: bold 0.9em sans-serif;
|
||||
max-height: 200px;
|
||||
overflow-y: auto;
|
||||
padding: 0 0.5em 15px 0.5em;
|
||||
}
|
||||
#map_canvas .ol-popup-content a {
|
||||
color: #111;
|
||||
}
|
||||
#map_canvas .ol-popup-content a:visited {
|
||||
color: green;
|
||||
}
|
||||
#map_canvas .ol-popup-content a:hover {
|
||||
color: red;
|
||||
}
|
||||
#map_canvas .ol-popup-closer:after {
|
||||
content: "✖";
|
||||
}
|
||||
#map_canvas .ol-control {
|
||||
position: absolute;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
bottom: .1em;
|
||||
left: .1em;
|
||||
height: 4%;
|
||||
width: 100%;
|
||||
margin-top: 1px;
|
||||
margin-bottom: 1px;
|
||||
padding-left: 1px;
|
||||
}
|
||||
#map_canvas .ol-rotate {
|
||||
display: none;
|
||||
}
|
||||
#map_canvas .ol-zoom, #map_canvas .ol-zoom-in, #map_canvas .ol-zoom-out {
|
||||
top: .5em;
|
||||
left: .5em;
|
||||
border-left-width: 1px;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
#map_canvas .ol-attribution ul {
|
||||
list-style-type: none;
|
||||
font-size:0.8em;
|
||||
float: left;
|
||||
margin-top: 1px;
|
||||
margin-bottom: 1px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#map_canvas .ol-attribution li {
|
||||
float: left;
|
||||
padding-left: 5px;
|
||||
}
|
||||
#map_canvas .ol-attribution button {
|
||||
display: none;
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
gramps
|
||||
command=gramps
|
||||
name=GRAMPS
|
||||
can_open_multiple_files=false
|
||||
expects_uris=false
|
||||
requires_terminal=false
|
||||
mime_types=application/x-gramps,application/x-gedcom,application/x-gramps-package,application/x-gramps-xml,application/x-geneweb
|
||||
@@ -1,13 +1,13 @@
|
||||
[Desktop Entry]
|
||||
Name=Gramps
|
||||
GenericName=Genealogy System
|
||||
X-GNOME-FullName=Gramps Genealogy System
|
||||
Comment=Manage genealogical information, perform genealogical research and analysis
|
||||
_Name=Gramps
|
||||
_GenericName=Genealogy System
|
||||
_X-GNOME-FullName=Gramps Genealogy System
|
||||
_Comment=Manage genealogical information, perform genealogical research and analysis
|
||||
Icon=gramps
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
Categories=GTK;Office;
|
||||
Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
|
||||
_Keywords=Genealogy;Family History;Research;Family Tree;GEDCOM;
|
||||
MimeType=application/x-gramps;application/x-gedcom;application/x-gramps-package;application/x-gramps-xml;
|
||||
Exec=gramps %F
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
application/x-gramps:
|
||||
_description=Gramps database
|
||||
default_action_type=application
|
||||
short_list_application_ids=gramps
|
||||
short_list_application_ids_for_novice_user_level=gramps
|
||||
short_list_application_ids_for_intermediate_user_level=gramps
|
||||
short_list_application_ids_for_advanced_user_level=gramps
|
||||
category=Documents/Genealogy
|
||||
icon-filename=/usr/share/gramps/gramps.png
|
||||
open=gramps %f
|
||||
|
||||
application/x-gramps-package:
|
||||
_description=Gramps package
|
||||
default_action_type=application
|
||||
short_list_application_ids=gramps
|
||||
short_list_application_ids_for_novice_user_level=gramps
|
||||
short_list_application_ids_for_intermediate_user_level=gramps
|
||||
short_list_application_ids_for_advanced_user_level=gramps
|
||||
category=Documents/Genealogy
|
||||
icon-filename=/usr/share/gramps/gramps.png
|
||||
open=gramps %f
|
||||
|
||||
application/x-gramps-xml:
|
||||
_description=Gramps XML database
|
||||
default_action_type=application
|
||||
short_list_application_ids=gramps
|
||||
short_list_application_ids_for_novice_user_level=gramps
|
||||
short_list_application_ids_for_intermediate_user_level=gramps
|
||||
short_list_application_ids_for_advanced_user_level=gramps
|
||||
category=Documents/Genealogy
|
||||
icon-filename=/usr/share/gramps/gramps.png
|
||||
open=gramps %f
|
||||
|
||||
application/x-gedcom:
|
||||
_description=GEDCOM
|
||||
default_action_type=application
|
||||
short_list_application_ids=gramps
|
||||
short_list_application_ids_for_novice_user_level=gramps
|
||||
short_list_application_ids_for_intermediate_user_level=gramps
|
||||
short_list_application_ids_for_advanced_user_level=gramps
|
||||
category=Documents/Genealogy
|
||||
icon-filename=/usr/share/gramps/gramps.png
|
||||
open=gramps %f
|
||||
|
||||
application/x-geneweb:
|
||||
_description=GeneWeb
|
||||
default_action_type=application
|
||||
short_list_application_ids=gramps
|
||||
short_list_application_ids_for_novice_user_level=gramps
|
||||
short_list_application_ids_for_intermediate_user_level=gramps
|
||||
short_list_application_ids_for_advanced_user_level=gramps
|
||||
category=Documents/Genealogy
|
||||
icon-filename=/usr/share/gramps/gramps.png
|
||||
open=gramps %f
|
||||
@@ -0,0 +1,14 @@
|
||||
application/x-gramps
|
||||
ext: grdb
|
||||
|
||||
application/x-gramps-xml
|
||||
ext: gramps
|
||||
|
||||
application/x-gramps-package
|
||||
ext: gpkg
|
||||
|
||||
application/x-gedcom
|
||||
ext: ged gedcom GED GEDCOM
|
||||
|
||||
application/x-geneweb
|
||||
ext: gw GW
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<calendar>
|
||||
<country name="Bulgaria">
|
||||
<country _name="Bulgaria">
|
||||
<date name="Нова Година" value="*/1/1" type="national" />
|
||||
<date name="Освобождение на България от Османско иго" value="*/3/3" type="national" />
|
||||
<date name="Ден на труда" value="*/5/1" type="national" />
|
||||
@@ -49,7 +49,7 @@
|
||||
<date name="Възнесение господне" value="2011/6/2" type="religious" />
|
||||
<date name="Възнесение господне" value="2012/5/24" type="religious" />
|
||||
</country>
|
||||
<country name="Canada">
|
||||
<country _name="Canada">
|
||||
<date name="New Year's Day" value="*/1/1" type="national" />
|
||||
<date name="Groundhog Day" value="*/2/2" type="secular" />
|
||||
<date name="Valentine's Day" value="*/2/14" type="secular" />
|
||||
@@ -81,7 +81,22 @@
|
||||
<date name="Christmas" value="*/12/25" type="national" />
|
||||
<date name="Boxing Day" value="*/12/26" type="national" />
|
||||
</country>
|
||||
<country name="Chile">
|
||||
<country _name="Czech Republic">
|
||||
<date name="Nový rok" value="*/1/1" type="national" />
|
||||
<date name="Den obnovy samostatného českého státu" value="*/1/1" type="national" />
|
||||
<date name="Velikonoce" type="religious" value="> easter(y)" />
|
||||
<date name="Svátek práce" value="*/5/1" type="national" />
|
||||
<date name="Den osvobození od fašismu" value="*/5/8" type="national" />
|
||||
<date name="Den slovanských věrozvěstů Cyrila a Metoděje" value="*/7/5" type="national" />
|
||||
<date name="Den upálení mistra Jana Husa" value="*/7/6" type="national" />
|
||||
<date name="Den české státnosti" value="*/9/28" type="national" />
|
||||
<date name="Den vzniku samostatného československého státu" value="*/10/28" type="national" />
|
||||
<date name="Den boje za svobodu a demokracii" value="*/11/17" type="national" />
|
||||
<date name="Štědrý den" value="*/12/24" type="religious" />
|
||||
<date name="1. svátek vánoční" value="*/12/25" type="national" />
|
||||
<date name="2. svátek vánoční" value="*/12/26" type="national" />
|
||||
</country>
|
||||
<country _name="Chile">
|
||||
<date name="Año nuevo" value="*/1/1" type="national" />
|
||||
<date name="Viernes Santo" value="2007/4/6" type="religious" />
|
||||
<date name="Viernes Santo" value="2008/3/21" type="religious" />
|
||||
@@ -104,10 +119,10 @@
|
||||
<date name="Inmaculada Concepción" value="*/12/8" type="religious" />
|
||||
<date name="Navidad" value="*/12/25" type="national" />
|
||||
</country>
|
||||
<country name="China">
|
||||
<country _name="China">
|
||||
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
||||
</country>
|
||||
<country name="Croatia">
|
||||
<country _name="Croatia">
|
||||
<date name="Nova godina" value="*/1/1" type="national" />
|
||||
<date name="Sveta tri kralja" value="*/1/6" type="national" />
|
||||
<date name="Uskrs" value="> easter(y)" type="national" />
|
||||
@@ -123,22 +138,7 @@
|
||||
<date name="Božić" value="*/12/25" type="national" />
|
||||
<date name="Sveti Stjepan" value="*/12/26" type="national" />
|
||||
</country>
|
||||
<country name="Czech Republic">
|
||||
<date name="Nový rok" value="*/1/1" type="national" />
|
||||
<date name="Den obnovy samostatného českého státu" value="*/1/1" type="national" />
|
||||
<date name="Velikonoce" type="religious" value="> easter(y)" />
|
||||
<date name="Svátek práce" value="*/5/1" type="national" />
|
||||
<date name="Den osvobození od fašismu" value="*/5/8" type="national" />
|
||||
<date name="Den slovanských věrozvěstů Cyrila a Metoděje" value="*/7/5" type="national" />
|
||||
<date name="Den upálení mistra Jana Husa" value="*/7/6" type="national" />
|
||||
<date name="Den české státnosti" value="*/9/28" type="national" />
|
||||
<date name="Den vzniku samostatného československého státu" value="*/10/28" type="national" />
|
||||
<date name="Den boje za svobodu a demokracii" value="*/11/17" type="national" />
|
||||
<date name="Štědrý den" value="*/12/24" type="religious" />
|
||||
<date name="1. svátek vánoční" value="*/12/25" type="national" />
|
||||
<date name="2. svátek vánoční" value="*/12/26" type="national" />
|
||||
</country>
|
||||
<country name="England">
|
||||
<country _name="England">
|
||||
<date name="New Year's Day" value="*/1/1" type="national" />
|
||||
<date name="Bank Holiday" value="*/1/1" offset="+1" if="dow(y, m, d) == 7" type="national" />
|
||||
<date name="Bank Holiday" value="*/1/1" offset="+2" if="dow(y, m, d) == 6" type="national" />
|
||||
@@ -168,7 +168,7 @@
|
||||
<date name="Armistice Day" value="*/11/11" type="secular" />
|
||||
<date name="Remembrance Sunday" value="*/2/sun/nov" type="secular" />
|
||||
</country>
|
||||
<country name="Finland">
|
||||
<country _name="Finland">
|
||||
<date name="Loppiainen" value="*/1/6" type="religious" if="not(y>=1973)" />
|
||||
<date name="Loppiainen" value="*/1/6" offset="sat" type="religious" if="(y>=1973) and not(y>=1992)" />
|
||||
<date name="Loppiainen" value="*/1/6" type="religious" if="(y>=1992)" />
|
||||
@@ -262,7 +262,7 @@
|
||||
<date name="Jean Sibeliuksen päivä" value="*/12/8" type="national" if="(y>=2011)" />
|
||||
<date name="Uudenvuodenaatto" value="*/12/31" type="national" if="(y>=1846)" />
|
||||
</country>
|
||||
<country name="France">
|
||||
<country _name="France">
|
||||
<date name="Jour de l'an" value="*/1/1" type="national" />
|
||||
<date name="Fête du travail" value="*/5/1" type="national" />
|
||||
<date name="Victoire 1945" value="*/5/8" type="national" />
|
||||
@@ -298,7 +298,7 @@
|
||||
<date name="début Ramadan" value="2016/06/08" type="religious" />
|
||||
<date name="Saint Étienne (Alsace/Moselle)" value="*/12/26" type="religious" />
|
||||
</country>
|
||||
<country name="Germany">
|
||||
<country _name="Germany">
|
||||
<date name="Neujahr" type="national" value="*/1/1" />
|
||||
<date name="Hl. Drei Könige BW,BY,ST" type="religious" value="*/1/6" />
|
||||
<date name="Karfreitag" type="religious" value="> easter(y)" offset="-2" />
|
||||
@@ -315,7 +315,7 @@
|
||||
<date name="1. Weihnachtsfeiertag" type="religious" value="*/12/25" />
|
||||
<date name="2. Weihnachtsfeiertag" type="religious" value="*/12/26" />
|
||||
</country>
|
||||
<country name="Japan">
|
||||
<country _name="Japan">
|
||||
<date name="元日" value="*/1/1" />
|
||||
<date name="成人の日" value="*/2/mon/jan" />
|
||||
<date name="建国記念の日" value="*/2/11" />
|
||||
@@ -338,96 +338,7 @@
|
||||
<date name="天皇(明仁)即位記念" value="1990/11/12" />
|
||||
<date name="皇太子徳仁親王の結婚" value="1993/6/9" />
|
||||
</country>
|
||||
<country name="Jewish Holidays">
|
||||
<date name="Purim" value="> passover(y)" offset="-30"/>
|
||||
<date name="Passover" value="> passover(y)" offset="0"/>
|
||||
<date name="2 of Passover" value="> passover(y)" offset="1"/>
|
||||
<date name="3 of Passover" value="> passover(y)" offset="2"/>
|
||||
<date name="4 of Passover" value="> passover(y)" offset="3"/>
|
||||
<date name="5 of Passover" value="> passover(y)" offset="4"/>
|
||||
<date name="6 of Passover" value="> passover(y)" offset="5"/>
|
||||
<date name="7 of Passover" value="> passover(y)" offset="6"/>
|
||||
<date name="Shavuot" value="> passover(y)" offset="50"/>
|
||||
<date name="Rosh Ha'Shana" value="> passover(y)" offset="163"/>
|
||||
<date name="Rosh Ha'Shana 2" value="> passover(y)" offset="164"/>
|
||||
<date name="Yom Kippur" value="> passover(y)" offset="172"/>
|
||||
<date name="Sukot" value="> passover(y)" offset="177"/>
|
||||
<date name="2 of Sukot" value="> passover(y)" offset="178"/>
|
||||
<date name="3 of Sukot" value="> passover(y)" offset="179"/>
|
||||
<date name="4 of Sukot" value="> passover(y)" offset="180"/>
|
||||
<date name="5 of Sukot" value="> passover(y)" offset="181"/>
|
||||
<date name="6 of Sukot" value="> passover(y)" offset="182"/>
|
||||
<date name="7 of Sukot" value="> passover(y)" offset="183"/>
|
||||
<date name="Simhat Tora" value="> passover(y)" offset="184"/>
|
||||
<date name="Hanuka" value="> hanuka(y)" offset="0"/>
|
||||
<date name="2 of Hanuka" value="> hanuka(y)" offset="1"/>
|
||||
<date name="3 of Hanuka" value="> hanuka(y)" offset="2"/>
|
||||
<date name="4 of Hanuka" value="> hanuka(y)" offset="3"/>
|
||||
<date name="5 of Hanuka" value="> hanuka(y)" offset="4"/>
|
||||
<date name="6 of Hanuka" value="> hanuka(y)" offset="5"/>
|
||||
<date name="7 of Hanuka" value="> hanuka(y)" offset="6"/>
|
||||
<date name="8 of Hanuka" value="> hanuka(y)" offset="7"/>
|
||||
</country>
|
||||
<country name="New Zealand">
|
||||
<date value="*/1/1" type="national" name="New Year's Day"/>
|
||||
<date value="*/1/2" type="national" name="Day After New Year's Day"/>
|
||||
<date value="*/1/1" type="national" offset="+1" name="New Years Day Holiday" if="dow(y, m, d) == 7"/>
|
||||
<date value="*/1/1" type="national" offset="+2" name="Day After New Years Day Holiday" if="dow(y, m, d) == 6"/>
|
||||
<date value="*/feb/6" type="national" name="Waitangi Day"/>
|
||||
<date value="> easter(y)" type="national" offset="-2" name="Good Friday"/>
|
||||
<date value="> easter(y)" type="national" offset="+1" name="Easter Monday"/>
|
||||
<date value="*/apr/25" type="national" name="ANZAC Day"/>
|
||||
<date value="*/-1/mon/jun" type="national" name="Queen's Birthday Holiday"/>
|
||||
<date value="*/-4/mon/oct" type="national" name="Labour Day"/>
|
||||
<date value="*/dec/25" type="national" name="Christmas Day"/>
|
||||
<date value="*/dec/26" type="national" name="Boxing Day"/>
|
||||
<date value="*/dec/25" type="national" offset="+2" name="Christmas Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
<date value="*/dec/26" type="national" offset="+2" name="Boxing Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
</country>
|
||||
<country name="Russia">
|
||||
<date value="*/1/7" type="religious" name="Рождество Христово" />
|
||||
<date value="*/1/19" type="religious" name="Крещение Господне" />
|
||||
<date value="*/2/23" type="national" name="День защитника" />
|
||||
<date value="*/3/8" type="national" name="Международный женский день" />
|
||||
<date value="*/5/1" type="national" name="День труда" />
|
||||
<date value="*/5/9" type="national" name="День Победы" />
|
||||
<date value="*/6/1" type="national" name="День защиты детей" />
|
||||
<date value="*/6/12" type="national" name="День России" />
|
||||
<date value="*/9/1" type="national" name="День знаний" />
|
||||
<date value="*/11/4" type="national" name="День народного единства" />
|
||||
<date value="*/12/31" offset="+2" type="national" name="Новый год" />
|
||||
</country>
|
||||
<country name="Serbia">
|
||||
<date value="*/1/1" type="national" name="Нова Година" />
|
||||
<date value="*/1/7" type="religious" name="Божић" />
|
||||
<date value="*/2/15" type="national" name="Дан државности Србије" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="-2" name="Велики петак" />
|
||||
<date value="> julian_easter(y)" type="religious" name="Васкрс" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="1" name="Васкрсни понедељак" />
|
||||
<date value="*/5/1" type="national" name="Празник рада" />
|
||||
<date value="*/11/11" type="national" name="Дан примирја" />
|
||||
<date value="*/1/27" type="religious" name="Свети Сава" />
|
||||
<date value="*/4/22" type="national" name="Дан сећања на жртве холокауста" />
|
||||
<date value="*/5/9" type="national" name="Дан победе" />
|
||||
<date value="*/6/28" type="religious" name="Видовдан" />
|
||||
<date value="*/10/21" type="national" name="Дан сећања на српске жртве у Другом светском рату" />
|
||||
</country>
|
||||
<country name="Serbia (Latin)">
|
||||
<date value="*/1/1" type="national" name="Nova godina" />
|
||||
<date value="*/1/7" type="religious" name="Božić" />
|
||||
<date value="*/2/15" type="national" name="Dan državnosti Srbije" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="-2" name="Veliki petak" />
|
||||
<date value="> julian_easter(y)" type="religious" name="Vaskrs" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="1" name="Vaskrsni ponedeljak" />
|
||||
<date value="*/5/1" type="national" name="Praznik rada" />
|
||||
<date value="*/11/11" type="national" name="Dan primirja" />
|
||||
<date value="*/1/27" type="religious" name="Sveti Sava" />
|
||||
<date value="*/4/22" type="national" name="Dan sećanja na žrtve holokausta" />
|
||||
<date value="*/5/9" type="national" name="Dan pobede" />
|
||||
<date value="*/6/28" type="religious" name="Vidovdan" />
|
||||
<date value="*/10/21" type="national" name="Dan sećanja na srpske žrtve u Drugom svetskom ratu" />
|
||||
</country>
|
||||
<country name="Slovakia">
|
||||
<country _name="Slovakia">
|
||||
<date name="Deň vzniku Slovenskej republiky" value="*/1/1" type="national" />
|
||||
<date name="Zjavenie Pána (Traja králi)" value="*/1/6" type="religious" />
|
||||
<date name="Veľký piatok" value="> easter(y)" offset="-2" type="religious" />
|
||||
@@ -444,7 +355,7 @@
|
||||
<date name="Prvý sviatok vianočný" value="*/12/25" type="national" />
|
||||
<date name="Druhý sviatok vianočný" value="*/12/26" type="national" />
|
||||
</country>
|
||||
<country name="Sweden">
|
||||
<country _name="Sweden">
|
||||
<date name="Nyårsafton" value="*/12/31" type="national" />
|
||||
<date name="Trettondedag jul" value="*/1/6" type="religious" />
|
||||
<date name="Alla helgons dag" value="*/oct/31" offset="sat" type="religious" if="(y>=1953)" />
|
||||
@@ -471,34 +382,7 @@
|
||||
<date name="Midsommardagen" value="*/jun/24" type="religious" if="not(y>=1953)" />
|
||||
<date name="Fars dag" value="*/2/sun/nov" type="national" />
|
||||
</country>
|
||||
<country name="Ukraine">
|
||||
<date value="*/1/1" type="national" name="Новий Рік"/>
|
||||
<date value="*/1/6" type="religious" name="Святий Вечір"/>
|
||||
<date value="*/1/7" type="religious" name="Різдво"/>
|
||||
<date value="*/1/13" type="religious" name="Маланка"/>
|
||||
<date value="*/1/14" type="religious" name="Старий Новий рік, Щедрий вечір"/>
|
||||
<date value="*/1/19" type="religious" name="Водохреща"/>
|
||||
<date value="*/1/22" type="national" name="День Соборності України"/>
|
||||
<date value="*/2/14" type="secular" name="День закоханих"/>
|
||||
<date value="*/2/15" type="religious" name="Стрітення"/>
|
||||
<date value="*/3/8" type="secular" name="Міжнародний жіночий день"/>
|
||||
<date value="*/3/20" type="secular" name="Весняне Рівнодення"/>
|
||||
<date value="*/4/1" type="secular" name="День сміху"/>
|
||||
<date value="*/4/7" type="religious" name="Благовіщення"/>
|
||||
<date value="> julian_easter(y)" type="religious" name="Великдень"/>
|
||||
<date value="*/5/1" type="national" name="День Праці"/>
|
||||
<date value="*/6/21" type="secular" name="Весняне Сонцестояння"/>
|
||||
<date value="*/6/28" type="national" name="День Конституції України"/>
|
||||
<date value="*/7/7" type="religious" name="Івана Купала"/>
|
||||
<date value="*/8/19" type="religious" name="Спаса"/>
|
||||
<date value="*/8/24" type="national" name="День Незалежності України"/>
|
||||
<date value="*/9/22" type="secular" name="Осіннє Рівнодення"/>
|
||||
<date value="*/10/14" type="religious" name="Покрова, День Українського козацтва"/>
|
||||
<date value="*/12/13" type="religious" name="Андрія"/>
|
||||
<date value="*/12/19" type="religious" name="Миколая"/>
|
||||
<date value="*/12/21" type="secular" name="Осіннє Сонцестояння"/>
|
||||
</country>
|
||||
<country name="United States of America">
|
||||
<country _name="United States of America">
|
||||
<date name="New Year's Eve" value="*/12/31" type="national" />
|
||||
<date name="New Year's Day" value="*/1/1" type="national" />
|
||||
<date name="ML Kings's Birthday" value="*/3/mon/jan" type="secular" />
|
||||
@@ -548,4 +432,107 @@
|
||||
<date name="Christmas" value="*/12/25" type="religious" />
|
||||
<date name="Kwanzaa begins" value="*/12/26" type="religious" />
|
||||
</country>
|
||||
<country _name="Jewish Holidays">
|
||||
<date _name="Purim" value="> passover(y)" offset="-30"/>
|
||||
<date _name="Passover" value="> passover(y)" offset="0"/>
|
||||
<date _name="2 of Passover" value="> passover(y)" offset="1"/>
|
||||
<date _name="3 of Passover" value="> passover(y)" offset="2"/>
|
||||
<date _name="4 of Passover" value="> passover(y)" offset="3"/>
|
||||
<date _name="5 of Passover" value="> passover(y)" offset="4"/>
|
||||
<date _name="6 of Passover" value="> passover(y)" offset="5"/>
|
||||
<date _name="7 of Passover" value="> passover(y)" offset="6"/>
|
||||
<date _name="Shavuot" value="> passover(y)" offset="50"/>
|
||||
<date _name="Rosh Ha'Shana" value="> passover(y)" offset="163"/>
|
||||
<date _name="Rosh Ha'Shana 2" value="> passover(y)" offset="164"/>
|
||||
<date _name="Yom Kippur" value="> passover(y)" offset="172"/>
|
||||
<date _name="Sukot" value="> passover(y)" offset="177"/>
|
||||
<date _name="2 of Sukot" value="> passover(y)" offset="178"/>
|
||||
<date _name="3 of Sukot" value="> passover(y)" offset="179"/>
|
||||
<date _name="4 of Sukot" value="> passover(y)" offset="180"/>
|
||||
<date _name="5 of Sukot" value="> passover(y)" offset="181"/>
|
||||
<date _name="6 of Sukot" value="> passover(y)" offset="182"/>
|
||||
<date _name="7 of Sukot" value="> passover(y)" offset="183"/>
|
||||
<date _name="Simhat Tora" value="> passover(y)" offset="184"/>
|
||||
<date _name="Hanuka" value="> hanuka(y)" offset="0"/>
|
||||
<date _name="2 of Hanuka" value="> hanuka(y)" offset="1"/>
|
||||
<date _name="3 of Hanuka" value="> hanuka(y)" offset="2"/>
|
||||
<date _name="4 of Hanuka" value="> hanuka(y)" offset="3"/>
|
||||
<date _name="5 of Hanuka" value="> hanuka(y)" offset="4"/>
|
||||
<date _name="6 of Hanuka" value="> hanuka(y)" offset="5"/>
|
||||
<date _name="7 of Hanuka" value="> hanuka(y)" offset="6"/>
|
||||
<date _name="8 of Hanuka" value="> hanuka(y)" offset="7"/>
|
||||
</country>
|
||||
<country _name="New Zealand">
|
||||
<date value="*/1/1" type="national" name="New Year's Day"/>
|
||||
<date value="*/1/2" type="national" name="Day After New Year's Day"/>
|
||||
<date value="*/1/1" type="national" offset="+1" name="New Years Day Holiday" if="dow(y, m, d) == 7"/>
|
||||
<date value="*/1/1" type="national" offset="+2" name="Day After New Years Day Holiday" if="dow(y, m, d) == 6"/>
|
||||
<date value="*/feb/6" type="national" name="Waitangi Day"/>
|
||||
<date value="> easter(y)" type="national" offset="-2" name="Good Friday"/>
|
||||
<date value="> easter(y)" type="national" offset="+1" name="Easter Monday"/>
|
||||
<date value="*/apr/25" type="national" name="ANZAC Day"/>
|
||||
<date value="*/-1/mon/jun" type="national" name="Queen's Birthday Holiday"/>
|
||||
<date value="*/-4/mon/oct" type="national" name="Labour Day"/>
|
||||
<date value="*/dec/25" type="national" name="Christmas Day"/>
|
||||
<date value="*/dec/26" type="national" name="Boxing Day"/>
|
||||
<date value="*/dec/25" type="national" offset="+2" name="Christmas Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
<date value="*/dec/26" type="national" offset="+2" name="Boxing Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
</country>
|
||||
<country _name="Ukraine">
|
||||
<date value="*/1/1" type="national" name="Новий Рік"/>
|
||||
<date value="*/1/6" type="religious" name="Святий Вечір"/>
|
||||
<date value="*/1/7" type="religious" name="Різдво"/>
|
||||
<date value="*/1/13" type="religious" name="Маланка"/>
|
||||
<date value="*/1/14" type="religious" name="Старий Новий рік, Щедрий вечір"/>
|
||||
<date value="*/1/19" type="religious" name="Водохреща"/>
|
||||
<date value="*/1/22" type="national" name="День Соборності України"/>
|
||||
<date value="*/2/14" type="secular" name="День закоханих"/>
|
||||
<date value="*/2/15" type="religious" name="Стрітення"/>
|
||||
<date value="*/3/8" type="secular" name="Міжнародний жіночий день"/>
|
||||
<date value="*/3/20" type="secular" name="Весняне Рівнодення"/>
|
||||
<date value="*/4/1" type="secular" name="День сміху"/>
|
||||
<date value="*/4/7" type="religious" name="Благовіщення"/>
|
||||
<date value="> julian_easter(y)" type="religious" name="Великдень"/>
|
||||
<date value="*/5/1" type="national" name="День Праці"/>
|
||||
<date value="*/6/21" type="secular" name="Весняне Сонцестояння"/>
|
||||
<date value="*/6/28" type="national" name="День Конституції України"/>
|
||||
<date value="*/7/7" type="religious" name="Івана Купала"/>
|
||||
<date value="*/8/19" type="religious" name="Спаса"/>
|
||||
<date value="*/8/24" type="national" name="День Незалежності України"/>
|
||||
<date value="*/9/22" type="secular" name="Осіннє Рівнодення"/>
|
||||
<date value="*/10/14" type="religious" name="Покрова, День Українського козацтва"/>
|
||||
<date value="*/12/13" type="religious" name="Андрія"/>
|
||||
<date value="*/12/19" type="religious" name="Миколая"/>
|
||||
<date value="*/12/21" type="secular" name="Осіннє Сонцестояння"/>
|
||||
</country>
|
||||
<country _name="Serbia">
|
||||
<date value="*/1/1" type="national" name="Нова Година" />
|
||||
<date value="*/1/7" type="religious" name="Божић" />
|
||||
<date value="*/2/15" type="national" name="Дан државности Србије" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="-2" name="Велики петак" />
|
||||
<date value="> julian_easter(y)" type="religious" name="Васкрс" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="1" name="Васкрсни понедељак" />
|
||||
<date value="*/5/1" type="national" name="Празник рада" />
|
||||
<date value="*/11/11" type="national" name="Дан примирја" />
|
||||
<date value="*/1/27" type="religious" name="Свети Сава" />
|
||||
<date value="*/4/22" type="national" name="Дан сећања на жртве холокауста" />
|
||||
<date value="*/5/9" type="national" name="Дан победе" />
|
||||
<date value="*/6/28" type="religious" name="Видовдан" />
|
||||
<date value="*/10/21" type="national" name="Дан сећања на српске жртве у Другом светском рату" />
|
||||
</country>
|
||||
<country _name="Serbia (Latin)">
|
||||
<date value="*/1/1" type="national" name="Nova godina" />
|
||||
<date value="*/1/7" type="religious" name="Božić" />
|
||||
<date value="*/2/15" type="national" name="Dan državnosti Srbije" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="-2" name="Veliki petak" />
|
||||
<date value="> julian_easter(y)" type="religious" name="Vaskrs" />
|
||||
<date value="> julian_easter(y)" type="religious" offset="1" name="Vaskrsni ponedeljak" />
|
||||
<date value="*/5/1" type="national" name="Praznik rada" />
|
||||
<date value="*/11/11" type="national" name="Dan primirja" />
|
||||
<date value="*/1/27" type="religious" name="Sveti Sava" />
|
||||
<date value="*/4/22" type="national" name="Dan sećanja na žrtve holokausta" />
|
||||
<date value="*/5/9" type="national" name="Dan pobede" />
|
||||
<date value="*/6/28" type="religious" name="Vidovdan" />
|
||||
<date value="*/10/21" type="national" name="Dan sećanja na srpske žrtve u Drugom svetskom ratu" />
|
||||
</country>
|
||||
</calendar>
|
||||
@@ -1,130 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tips>
|
||||
|
||||
<tip number="1"><b>Working with Dates</b><br/>A range of dates can be given by using the format "between January 4, 2000 and March 20, 2003". You can also indicate the level of confidence in a date and even choose between seven different calendars. Try the button next to the date field in the Events Editor.</tip>
|
||||
|
||||
<tip number="2"><b>Editing Objects</b><br/>In most cases double clicking on a name, source, place or media entry will bring up a window to allow you to edit the object. Note that the result can be dependent on context. For example, in the Family View clicking on a parent or child will bring up the Relationship Editor.</tip>
|
||||
|
||||
<tip number="3"><b>Adding Images</b><br/>An image can be added to any gallery or the Media View by dragging and dropping it from a file manager or a web browser. Actually you can add any type of file like this, useful for scans of documents and other digital sources.</tip>
|
||||
|
||||
<tip number="4"><b>Ordering Children in a Family</b><br/>The birth order of children in a family can be set by using drag and drop. This order is preserved even when they do not have birth dates.</tip>
|
||||
|
||||
<tip number="5"><b>Talk to Relatives Before It Is Too Late</b><br/>Your oldest relatives can be your most important source of information. They usually know things about the family that haven't been written down. They might tell you nuggets about people that may one day lead to a new avenue of research. At the very least, you will get to hear some great stories. Don't forget to record the conversations!</tip>
|
||||
|
||||
<tip number="7"><b>Filtering People</b><br/>In the People View, you can 'filter' individuals based on many criteria. To define a new filter go to "Edit > Person Filter Editor". There you can name your filter and add and combine rules using the many preset rules. For example, you can define a filter to find all adopted people in the family tree. People without a birth date mentioned can also be filtered. To get the results save your filter and select it at the bottom of the Filter Sidebar, then click Apply. If the Filter Sidebar is not visible, select View > Filter.</tip>
|
||||
|
||||
<tip number="8"><b>Inverted Filtering</b><br/>Filters can easily be reversed by using the 'invert' option. For instance, by inverting the 'People with children' filter you can select all people without children.</tip>
|
||||
|
||||
<tip number="9"><b>Locating People</b><br/>By default, each surname in the People View is listed only once. By clicking on the arrow to the left of a name, the list will expand to show all individuals with that last name. To locate any Family Name from a long list, select a Family Name (not a person) and start typing. The view will jump to the first Family Name matching the letters you enter.</tip>
|
||||
|
||||
<tip number="10"><b>The Family View</b><br/>The Family View is used to display a typical family unit as two parents and their children.</tip>
|
||||
|
||||
<tip number="11"><b>Changing the Active Person</b><br/>Changing the Active Person in views is easy. In the Relationship view just click on anyone. In the Ancestry View doubleclick on the person or right click to select any of their spouses, siblings, children or parents.</tip>
|
||||
|
||||
<tip number="12"><b>Who Was Born When?</b><br/>Under "Tools > Analysis and exploration > Compare Individual Events..." you can compare the data of individuals in your database. This is useful, say, if you wish to list the birth dates of everyone in your database. You can use a custom filter to narrow the results.</tip>
|
||||
|
||||
<tip number="13"><b>Gramps Tools</b><br/>Gramps comes with a rich set of tools. These allow you to undertake operations such as checking the database for errors and consistency. There are research and analysis tools such as event comparison, finding duplicate people, interactive descendant browser, and many others. All tools can be accessed through the "Tools" menu.</tip>
|
||||
|
||||
<tip number="14"><b>Calculating Relationships</b><br/>To check if two people in the database are related (by blood, not marriage) try the tool under "Tools > Utilities > Relationship Calculator...". The exact relationship as well as all common ancestors are reported.</tip>
|
||||
|
||||
<tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx Gramplet takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To view the SoundEx codes for surnames in your database, add the SoundEx Gramplet.</tip>
|
||||
|
||||
<tip number="16"><b>Setting Your Preferences</b><br/>"Edit > Preferences..." lets you modify a number of settings, such as the path to your media files, and allows you to adjust many aspects of the Gramps presentation to your needs. Each separate view can also be configured under "View > Configure View..."</tip>
|
||||
|
||||
<tip number="17"><b>Gramps Reports</b><br/>Gramps offers a wide variety of reports. The Graphical Reports and Graphs can present complex relationships easily and the Text Reports are particularly useful if you want to send the results of your family tree to members of the family via email. If you're ready to make a website for your family tree then there's a report for that as well.</tip>
|
||||
|
||||
<tip number="18"><b>Starting a New Family Tree</b><br/>A good way to start a new family tree is to enter all the members of the family into the database using the Person View (use "Edit > Add..." or click on the Add a new person button from the People View). Then go to the Relationship View and create relationships between people.</tip>
|
||||
|
||||
<tip number="19"><b>What's That For?</b><br/>Unsure what a button does? Simply hold the mouse over a button and a tooltip will appear.</tip>
|
||||
|
||||
<tip number="20"><b>Unsure of a Date?</b><br/>If you're unsure about the date an event occurred, Gramps allows you to enter a wide range of date formats based on a guess or an estimate. For instance, "about 1908" is a valid entry for a birth date in Gramps. Click the Date button next to the date field and see the Gramps Manual to learn more.</tip>
|
||||
|
||||
<tip number="21"><b>Duplicate Entries</b><br/>"Tools > Database Processing > Find Possible Duplicate People..." allows you to locate (and merge) entries of the same person entered more than once in the database.</tip>
|
||||
|
||||
<tip number="22"><b>Merging Entries</b><br/>The function "Edit > Compare and Merge..." allows you to combine separately listed people into one. Select the second entry by holding the Control key as you click. This is very useful for combining two databases with overlapping people, or combining erroneously entered differing names for one individual. This also works for the Places, Sources and Repositories views.</tip>
|
||||
|
||||
<tip number="23"><b>Organising the Views</b><br/>Many of the views can present your data as either a hierarchical tree or as a simple list. Each view can also be configured to the way you like it. Have a look to the right of the top toolbar or under the "View" menu.</tip>
|
||||
|
||||
<tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People and Events. You can move forward and backward through the list using "Go > Forward" and "Go > Back" or the arrow buttons.</tip>
|
||||
|
||||
<tip number="25"><b>Keyboard Shortcuts</b><br/>Tired of having to take your hand off the keyboard to use the mouse? Many functions in Gramps have keyboard shortcuts. If one exists for a function it is displayed on the right side of the menu.</tip>
|
||||
|
||||
<tip number="26"><b>Read the Manual</b><br/>Don't forget to read the Gramps manual, "Help > User Manual". The developers have worked hard to make most operations intuitive but the manual is full of information that will make your time spent on genealogy more productive.</tip>
|
||||
|
||||
<tip number="27"><b>Adding Children</b><br/>To add children in Gramps there are two options. You can find one of their parents in the Families View and open the family. Then choose to create a new person or add an existing person. You can also add children (or siblings) from inside the Family Editor.</tip>
|
||||
|
||||
<tip number="28"><b>Editing the Parent-Child Relationship</b><br/> You can edit the relationship of a child to its parents by double clicking the child in the Family Editor. Relationships can be any of Adopted, Birth, Foster, None, Sponsored, Stepchild and Unknown.</tip>
|
||||
|
||||
<tip number="29"><b>Show All Checkbutton</b><br/>When adding an existing person as a spouse, the list of people shown is filtered to display only people who could realistically fit the role (based on dates in the database). In case Gramps is wrong in making this choice, you can override the filter by checking the Show All checkbutton.</tip>
|
||||
|
||||
<tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to https://gramps-project.org/bugs/ and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</tip>
|
||||
|
||||
<tip number="32"><b>Gramps Mailing Lists</b><br/>Want answers to your questions about Gramps? Check out the gramps-users email list. Many helpful people are on the list, so you're likely to get an answer quickly. If you have questions related to the development of Gramps, try the gramps-devel list. You can see the lists by selecting "Help > Gramps Mailing Lists".</tip>
|
||||
|
||||
<tip number="33"><b>Contributing to Gramps</b><br/>Want to help with Gramps but can't write programs? Not a problem! A project as large as Gramps requires people with a wide variety of skills. Contributions can be anything from writing documentation to testing development versions and helping with the web site. Start by subscribing to the Gramps developers mailing list, gramps-devel, and introducing yourself. Subscription information can be found at "Help > Gramps Mailing Lists"</tip>
|
||||
|
||||
<tip number="34"><b>So What's in a Name?</b><br/>The name Gramps was suggested to the original developer, Don Allingham, by his father. It stands for <i>Genealogical Research and Analysis Management Program System</i>. It is a full-featured genealogy program letting you store, edit, and research genealogical data. The Gramps database back end is so robust that some users are managing genealogies containing hundreds of thousands of people.</tip>
|
||||
|
||||
<tip number="36"><b>Bookmarking Individuals</b><br/>The Bookmarks menu is a convenient place to store the names of frequently used individuals. Selecting a bookmark will make that person the Active Person. To bookmark someone make them the Active Person then go to "Bookmarks > Add Bookmark" or press Ctrl+D. You can also bookmark most of the other objects.</tip>
|
||||
|
||||
<tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a either a reddish background or a red dot on the right edge of the field. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under "Edit > Preferences > Display".</tip>
|
||||
|
||||
<tip number="38"><b>Listing Events</b><br/>Events are added using the editor opened with "Person > Edit Person > Events". There is a long list of preset event types. You can add your own event types by typing in the text field, they will be added to the available events, but not translated.</tip>
|
||||
|
||||
<tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the preferred name by dragging it to the Preferred Name section.</tip>
|
||||
|
||||
<tip number="40"><b>Ancestor View</b><br/>The Ancestry View displays a traditional pedigree chart. Hold the mouse over an individual to see more information about them or right click on an individual to access other family members and settings. Play with the settings to see the different options.</tip>
|
||||
|
||||
<tip number="41"><b>Managing Sources</b><br/>The Sources View shows a list of all sources in a single window. From here you can edit your sources, merge duplicates and see which individuals reference each source. You can use filters to group your sources.</tip>
|
||||
|
||||
<tip number="42"><b>Managing Places</b><br/>The Places View shows a list of all places in the database. The list can be sorted by a number of different criteria, such as City, County or State.</tip>
|
||||
|
||||
<tip number="43"><b>Media View</b><br/>The Media View shows a list of all media entered in the database. These can be graphic images, videos, sound clips, spreadsheets, documents, and more.</tip>
|
||||
|
||||
<tip number="44"><b>Filters</b><br/>Filters allow you to limit the people seen in the People View. In addition to the many preset filters, Custom Filters can be created limited only by your imagination. Custom filters are created from "Edit > Person Filter Editor".</tip>
|
||||
|
||||
<tip number="45"><b>The GEDCOM File Format</b><br/>Gramps allows you to import from, and export to, the GEDCOM format. There is extensive support for the industry standard GEDCOM version 5.5, so you can exchange Gramps information to and from users of most other genealogy programs. Filters exist that make importing and exporting GEDCOM files trivial.</tip>
|
||||
|
||||
<tip number="46"><b>The Gramps XML Package</b><br/>You can export your Family Tree as a Gramps XML Package. This is a compressed file containing your family tree data and all the media files connected to the database (images for example). This file is completely portable so is useful for backups or sharing with other Gramps users. This format has the key advantage over GEDCOM that no information is ever lost when exporting and importing.</tip>
|
||||
|
||||
<tip number="48"><b>Web Family Tree Format</b><br/>Gramps can export data to the Web Family Tree (WFT) format. This format allows a family tree to be displayed online using a single file, instead of many html files.</tip>
|
||||
|
||||
<tip number="49"><b>Making a Genealogy Website</b><br/>You can easily export your family tree to a web page. Select the entire database, family lines or selected individuals to a collection of web pages ready for upload to the World Wide Web.</tip>
|
||||
|
||||
<tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at https://gramps-project.org/bugs/</tip>
|
||||
|
||||
<tip number="51"><b>The Gramps Homepage</b><br/>The Gramps homepage is at http://gramps-project.org/</tip>
|
||||
|
||||
<tip number="53"><b>Privacy in Gramps</b><br/>Gramps helps you to keep personal information secure by allowing you to mark information as private. Data marked as private can be excluded from reports and data exports. Look for the padlock which toggles records between private and public.</tip>
|
||||
|
||||
<tip number="54"><b>Keeping Good Records</b><br/>Be accurate when recording genealogical information. Don't make assumptions while recording primary information; write it exactly as you see it. Use bracketed comments to indicate your additions, deletions or comments. Use of the Latin 'sic' is recommended to confirm the accurate transcription of what appears to be an error in a source.</tip>
|
||||
|
||||
<tip number="57"><b>Extra Reports and Tools</b><br/>Extra tools and reports can be added to Gramps with the "Addon" system. See them under "Help > Extra Reports/Tools". This is the best way for advanced users to experiment and create new functionality.</tip>
|
||||
|
||||
<tip number="58"><b>Book Reports</b><br/>The Book report under "Reports > Books > Book Report...", allows you to collect a variety of reports into a single document. This single report is easier to distribute than multiple reports, especially when printed.</tip>
|
||||
|
||||
<tip number="59"><b>Gramps Announcements</b><br/>Interested in getting notified when a new version of Gramps is released? Join the Gramps-announce mailing list at "Help > Gramps Mailing Lists"</tip>
|
||||
|
||||
<tip number="60"><b>Record Your Sources</b><br/>Information collected about your family is only as good as the source it came from. Take the time and trouble to record all the details of where the information came from. Whenever possible get a copy of original documents.</tip>
|
||||
|
||||
<tip number="61"><b>Directing Your Research</b><br/>Go from what you know to what you do not. Always record everything that is known before making conjectures. Often the facts at hand suggest plenty of direction for more research. Don't waste time looking through thousands of records hoping for a trail when you have other unexplored leads.</tip>
|
||||
|
||||
<tip number="62"><b>The 'How and Why' of Your Genealogy</b><br/> Genealogy isn't only about dates and names. It is about people. Be descriptive. Include why things happened, and how descendants might have been shaped by the events they went through. Narratives go a long way in making your family history come alive.</tip>
|
||||
|
||||
<tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 40 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</tip>
|
||||
|
||||
<tip number="64"><b>Gramps Translators</b><br/>Gramps has been designed so that new translations can easily be added with little development effort. If you are interested in participating please email gramps-devel@lists.sf.net</tip>
|
||||
|
||||
<tip number="66"><b>Hello, привет or 喂</b><br/>Whatever script you use Gramps offers full Unicode support. Characters for all languages are properly displayed.</tip>
|
||||
|
||||
<tip number="67"><b>The Home Person</b><br/>Anyone can be chosen as the Home Person in Gramps. Use "Edit > Set Home Person" in the Person View. The home person is the person who is selected when the database is opened or when the home button is pressed.</tip>
|
||||
|
||||
<tip number="70"><b>The Gramps Code</b><br/>Gramps is written in a computer language called Python using the GTK and GNOME libraries for the graphical interface. Gramps is supported on any computer system where these programs have been ported. Gramps is known to be run on Linux, BSD, Solaris, Windows and Mac OS X.</tip>
|
||||
|
||||
<tip number="71"><b>Open Source Software</b><br/>The Free/Libre and Open Source Software (FLOSS) development model means Gramps can be extended by any programmer since all of the source code is freely available under its license. So it's not just about free beer, it's also about freedom to study and change the tool. For more about Open Source software lookup the Free Software Foundation and the Open Source Initiative.</tip>
|
||||
|
||||
<tip number="72"><b>The Gramps Software License</b><br/>You are free to use and share Gramps with others. Gramps is freely distributable under the GNU General Public License, see http://www.gnu.org/licenses/licenses.html#GPL to read about the rights and restrictions of this license.</tip>
|
||||
|
||||
<tip number="73"><b>Gramps for Gnome or KDE?</b><br/>For Linux users Gramps works with whichever desktop environment you prefer. As long as the required GTK libraries are installed it will run fine.</tip>
|
||||
|
||||
</tips>
|
||||
@@ -0,0 +1,130 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tips>
|
||||
|
||||
<_tip number="1"><b>Working with Dates</b><br/>A range of dates can be given by using the format "between January 4, 2000 and March 20, 2003". You can also indicate the level of confidence in a date and even choose between seven different calendars. Try the button next to the date field in the Events Editor.</_tip>
|
||||
|
||||
<_tip number="2"><b>Editing Objects</b><br/>In most cases double clicking on a name, source, place or media entry will bring up a window to allow you to edit the object. Note that the result can be dependent on context. For example, in the Family View clicking on a parent or child will bring up the Relationship Editor.</_tip>
|
||||
|
||||
<_tip number="3"><b>Adding Images</b><br/>An image can be added to any gallery or the Media View by dragging and dropping it from a file manager or a web browser. Actually you can add any type of file like this, useful for scans of documents and other digital sources.</_tip>
|
||||
|
||||
<_tip number="4"><b>Ordering Children in a Family</b><br/>The birth order of children in a family can be set by using drag and drop. This order is preserved even when they do not have birth dates.</_tip>
|
||||
|
||||
<_tip number="5"><b>Talk to Relatives Before It Is Too Late</b><br/>Your oldest relatives can be your most important source of information. They usually know things about the family that haven't been written down. They might tell you nuggets about people that may one day lead to a new avenue of research. At the very least, you will get to hear some great stories. Don't forget to record the conversations!</_tip>
|
||||
|
||||
<_tip number="7"><b>Filtering People</b><br/>In the People View, you can 'filter' individuals based on many criteria. To define a new filter go to "Edit > Person Filter Editor". There you can name your filter and add and combine rules using the many preset rules. For example, you can define a filter to find all adopted people in the family tree. People without a birth date mentioned can also be filtered. To get the results save your filter and select it at the bottom of the Filter Sidebar, then click Apply. If the Filter Sidebar is not visible, select View > Filter.</_tip>
|
||||
|
||||
<_tip number="8"><b>Inverted Filtering</b><br/>Filters can easily be reversed by using the 'invert' option. For instance, by inverting the 'People with children' filter you can select all people without children.</_tip>
|
||||
|
||||
<_tip number="9"><b>Locating People</b><br/>By default, each surname in the People View is listed only once. By clicking on the arrow to the left of a name, the list will expand to show all individuals with that last name. To locate any Family Name from a long list, select a Family Name (not a person) and start typing. The view will jump to the first Family Name matching the letters you enter.</_tip>
|
||||
|
||||
<_tip number="10"><b>The Family View</b><br/>The Family View is used to display a typical family unit as two parents and their children.</_tip>
|
||||
|
||||
<_tip number="11"><b>Changing the Active Person</b><br/>Changing the Active Person in views is easy. In the Relationship view just click on anyone. In the Ancestry View doubleclick on the person or right click to select any of their spouses, siblings, children or parents.</_tip>
|
||||
|
||||
<_tip number="12"><b>Who Was Born When?</b><br/>Under "Tools > Analysis and exploration > Compare Individual Events..." you can compare the data of individuals in your database. This is useful, say, if you wish to list the birth dates of everyone in your database. You can use a custom filter to narrow the results.</_tip>
|
||||
|
||||
<_tip number="13"><b>Gramps Tools</b><br/>Gramps comes with a rich set of tools. These allow you to undertake operations such as checking the database for errors and consistency. There are research and analysis tools such as event comparison, finding duplicate people, interactive descendant browser, and many others. All tools can be accessed through the "Tools" menu.</_tip>
|
||||
|
||||
<_tip number="14"><b>Calculating Relationships</b><br/>To check if two people in the database are related (by blood, not marriage) try the tool under "Tools > Utilities > Relationship Calculator...". The exact relationship as well as all common ancestors are reported.</_tip>
|
||||
|
||||
<_tip number="15"><b>SoundEx can help with family research</b><br/>SoundEx solves a long standing problem in genealogy, how to handle spelling variations. The SoundEx Gramplet takes a surname and generates a simplified form that is equivalent for similar sounding names. Knowing the SoundEx Code for a surname is very helpful for researching Census Data files (microfiche) at a library or other research facility. To view the SoundEx codes for surnames in your database, add the SoundEx Gramplet.</_tip>
|
||||
|
||||
<_tip number="16"><b>Setting Your Preferences</b><br/>"Edit > Preferences..." lets you modify a number of settings, such as the path to your media files, and allows you to adjust many aspects of the Gramps presentation to your needs. Each separate view can also be configured under "View > Configure View..."</_tip>
|
||||
|
||||
<_tip number="17"><b>Gramps Reports</b><br/>Gramps offers a wide variety of reports. The Graphical Reports and Graphs can present complex relationships easily and the Text Reports are particularly useful if you want to send the results of your family tree to members of the family via email. If you're ready to make a website for your family tree then there's a report for that as well.</_tip>
|
||||
|
||||
<_tip number="18"><b>Starting a New Family Tree</b><br/>A good way to start a new family tree is to enter all the members of the family into the database using the Person View (use "Edit > Add..." or click on the Add a new person button from the People View). Then go to the Relationship View and create relationships between people.</_tip>
|
||||
|
||||
<_tip number="19"><b>What's That For?</b><br/>Unsure what a button does? Simply hold the mouse over a button and a tooltip will appear.</_tip>
|
||||
|
||||
<_tip number="20"><b>Unsure of a Date?</b><br/>If you're unsure about the date an event occurred, Gramps allows you to enter a wide range of date formats based on a guess or an estimate. For instance, "about 1908" is a valid entry for a birth date in Gramps. Click the Date button next to the date field and see the Gramps Manual to learn more.</_tip>
|
||||
|
||||
<_tip number="21"><b>Duplicate Entries</b><br/>"Tools > Database Processing > Find Possible Duplicate People..." allows you to locate (and merge) entries of the same person entered more than once in the database.</_tip>
|
||||
|
||||
<_tip number="22"><b>Merging Entries</b><br/>The function "Edit > Compare and Merge..." allows you to combine separately listed people into one. Select the second entry by holding the Control key as you click. This is very useful for combining two databases with overlapping people, or combining erroneously entered differing names for one individual. This also works for the Places, Sources and Repositories views.</_tip>
|
||||
|
||||
<_tip number="23"><b>Organising the Views</b><br/>Many of the views can present your data as either a hierarchical tree or as a simple list. Each view can also be configured to the way you like it. Have a look to the right of the top toolbar or under the "View" menu.</_tip>
|
||||
|
||||
<_tip number="24"><b>Navigating Back and Forward</b><br/>Gramps maintains a list of previous active objects such as People and Events. You can move forward and backward through the list using "Go > Forward" and "Go > Back" or the arrow buttons.</_tip>
|
||||
|
||||
<_tip number="25"><b>Keyboard Shortcuts</b><br/>Tired of having to take your hand off the keyboard to use the mouse? Many functions in Gramps have keyboard shortcuts. If one exists for a function it is displayed on the right side of the menu.</_tip>
|
||||
|
||||
<_tip number="26"><b>Read the Manual</b><br/>Don't forget to read the Gramps manual, "Help > User Manual". The developers have worked hard to make most operations intuitive but the manual is full of information that will make your time spent on genealogy more productive.</_tip>
|
||||
|
||||
<_tip number="27"><b>Adding Children</b><br/>To add children in Gramps there are two options. You can find one of their parents in the Families View and open the family. Then choose to create a new person or add an existing person. You can also add children (or siblings) from inside the Family Editor.</_tip>
|
||||
|
||||
<_tip number="28"><b>Editing the Parent-Child Relationship</b><br/> You can edit the relationship of a child to its parents by double clicking the child in the Family Editor. Relationships can be any of Adopted, Birth, Foster, None, Sponsored, Stepchild and Unknown.</_tip>
|
||||
|
||||
<_tip number="29"><b>Show All Checkbutton</b><br/>When adding an existing person as a spouse, the list of people shown is filtered to display only people who could realistically fit the role (based on dates in the database). In case Gramps is wrong in making this choice, you can override the filter by checking the Show All checkbutton.</_tip>
|
||||
|
||||
<_tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to https://gramps-project.org/bugs/ and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</_tip>
|
||||
|
||||
<_tip number="32"><b>Gramps Mailing Lists</b><br/>Want answers to your questions about Gramps? Check out the gramps-users email list. Many helpful people are on the list, so you're likely to get an answer quickly. If you have questions related to the development of Gramps, try the gramps-devel list. You can see the lists by selecting "Help > Gramps Mailing Lists".</_tip>
|
||||
|
||||
<_tip number="33"><b>Contributing to Gramps</b><br/>Want to help with Gramps but can't write programs? Not a problem! A project as large as Gramps requires people with a wide variety of skills. Contributions can be anything from writing documentation to testing development versions and helping with the web site. Start by subscribing to the Gramps developers mailing list, gramps-devel, and introducing yourself. Subscription information can be found at "Help > Gramps Mailing Lists"</_tip>
|
||||
|
||||
<_tip number="34"><b>So What's in a Name?</b><br/>The name Gramps was suggested to the original developer, Don Allingham, by his father. It stands for <i>Genealogical Research and Analysis Management Program System</i>. It is a full-featured genealogy program letting you store, edit, and research genealogical data. The Gramps database back end is so robust that some users are managing genealogies containing hundreds of thousands of people.</_tip>
|
||||
|
||||
<_tip number="36"><b>Bookmarking Individuals</b><br/>The Bookmarks menu is a convenient place to store the names of frequently used individuals. Selecting a bookmark will make that person the Active Person. To bookmark someone make them the Active Person then go to "Bookmarks > Add Bookmark" or press Ctrl+D. You can also bookmark most of the other objects.</_tip>
|
||||
|
||||
<_tip number="37"><b>Incorrect Dates</b><br/>Everyone occasionally enters dates with an invalid format. Incorrect date formats will show up in Gramps with a either a reddish background or a red dot on the right edge of the field. You can fix the date using the Date Selection dialog which can be opened by clicking on the date button. The format of the date is set under "Edit > Preferences > Display".</_tip>
|
||||
|
||||
<_tip number="38"><b>Listing Events</b><br/>Events are added using the editor opened with "Person > Edit Person > Events". There is a long list of preset event types. You can add your own event types by typing in the text field, they will be added to the available events, but not translated.</_tip>
|
||||
|
||||
<_tip number="39"><b>Managing Names</b><br/>It is easy to manage people with several names in Gramps. In the Person Editor select the Names tab. You can add names of different types and set the preferred name by dragging it to the Preferred Name section.</_tip>
|
||||
|
||||
<_tip number="40"><b>Ancestor View</b><br/>The Ancestry View displays a traditional pedigree chart. Hold the mouse over an individual to see more information about them or right click on an individual to access other family members and settings. Play with the settings to see the different options.</_tip>
|
||||
|
||||
<_tip number="41"><b>Managing Sources</b><br/>The Sources View shows a list of all sources in a single window. From here you can edit your sources, merge duplicates and see which individuals reference each source. You can use filters to group your sources.</_tip>
|
||||
|
||||
<_tip number="42"><b>Managing Places</b><br/>The Places View shows a list of all places in the database. The list can be sorted by a number of different criteria, such as City, County or State.</_tip>
|
||||
|
||||
<_tip number="43"><b>Media View</b><br/>The Media View shows a list of all media entered in the database. These can be graphic images, videos, sound clips, spreadsheets, documents, and more.</_tip>
|
||||
|
||||
<_tip number="44"><b>Filters</b><br/>Filters allow you to limit the people seen in the People View. In addition to the many preset filters, Custom Filters can be created limited only by your imagination. Custom filters are created from "Edit > Person Filter Editor".</_tip>
|
||||
|
||||
<_tip number="45"><b>The GEDCOM File Format</b><br/>Gramps allows you to import from, and export to, the GEDCOM format. There is extensive support for the industry standard GEDCOM version 5.5, so you can exchange Gramps information to and from users of most other genealogy programs. Filters exist that make importing and exporting GEDCOM files trivial.</_tip>
|
||||
|
||||
<_tip number="46"><b>The Gramps XML Package</b><br/>You can export your Family Tree as a Gramps XML Package. This is a compressed file containing your family tree data and all the media files connected to the database (images for example). This file is completely portable so is useful for backups or sharing with other Gramps users. This format has the key advantage over GEDCOM that no information is ever lost when exporting and importing.</_tip>
|
||||
|
||||
<_tip number="48"><b>Web Family Tree Format</b><br/>Gramps can export data to the Web Family Tree (WFT) format. This format allows a family tree to be displayed online using a single file, instead of many html files.</_tip>
|
||||
|
||||
<_tip number="49"><b>Making a Genealogy Website</b><br/>You can easily export your family tree to a web page. Select the entire database, family lines or selected individuals to a collection of web pages ready for upload to the World Wide Web.</_tip>
|
||||
|
||||
<_tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at https://gramps-project.org/bugs/</_tip>
|
||||
|
||||
<_tip number="51"><b>The Gramps Homepage</b><br/>The Gramps homepage is at http://gramps-project.org/</_tip>
|
||||
|
||||
<_tip number="53"><b>Privacy in Gramps</b><br/>Gramps helps you to keep personal information secure by allowing you to mark information as private. Data marked as private can be excluded from reports and data exports. Look for the padlock which toggles records between private and public.</_tip>
|
||||
|
||||
<_tip number="54"><b>Keeping Good Records</b><br/>Be accurate when recording genealogical information. Don't make assumptions while recording primary information; write it exactly as you see it. Use bracketed comments to indicate your additions, deletions or comments. Use of the Latin 'sic' is recommended to confirm the accurate transcription of what appears to be an error in a source.</_tip>
|
||||
|
||||
<_tip number="57"><b>Extra Reports and Tools</b><br/>Extra tools and reports can be added to Gramps with the "Addon" system. See them under "Help > Extra Reports/Tools". This is the best way for advanced users to experiment and create new functionality.</_tip>
|
||||
|
||||
<_tip number="58"><b>Book Reports</b><br/>The Book report under "Reports > Books > Book Report...", allows you to collect a variety of reports into a single document. This single report is easier to distribute than multiple reports, especially when printed.</_tip>
|
||||
|
||||
<_tip number="59"><b>Gramps Announcements</b><br/>Interested in getting notified when a new version of Gramps is released? Join the Gramps-announce mailing list at "Help > Gramps Mailing Lists"</_tip>
|
||||
|
||||
<_tip number="60"><b>Record Your Sources</b><br/>Information collected about your family is only as good as the source it came from. Take the time and trouble to record all the details of where the information came from. Whenever possible get a copy of original documents.</_tip>
|
||||
|
||||
<_tip number="61"><b>Directing Your Research</b><br/>Go from what you know to what you do not. Always record everything that is known before making conjectures. Often the facts at hand suggest plenty of direction for more research. Don't waste time looking through thousands of records hoping for a trail when you have other unexplored leads.</_tip>
|
||||
|
||||
<_tip number="62"><b>The 'How and Why' of Your Genealogy</b><br/> Genealogy isn't only about dates and names. It is about people. Be descriptive. Include why things happened, and how descendants might have been shaped by the events they went through. Narratives go a long way in making your family history come alive.</_tip>
|
||||
|
||||
<_tip number="63"><b>Don't speak English?</b><br/>Volunteers have translated Gramps into more than 40 languages. If Gramps supports your language and it is not being displayed, set the default language in your operating system and restart Gramps.</_tip>
|
||||
|
||||
<_tip number="64"><b>Gramps Translators</b><br/>Gramps has been designed so that new translations can easily be added with little development effort. If you are interested in participating please email gramps-devel@lists.sf.net</_tip>
|
||||
|
||||
<_tip number="66"><b>Hello, привет or 喂</b><br/>Whatever script you use Gramps offers full Unicode support. Characters for all languages are properly displayed.</_tip>
|
||||
|
||||
<_tip number="67"><b>The Home Person</b><br/>Anyone can be chosen as the Home Person in Gramps. Use "Edit > Set Home Person" in the Person View. The home person is the person who is selected when the database is opened or when the home button is pressed.</_tip>
|
||||
|
||||
<_tip number="70"><b>The Gramps Code</b><br/>Gramps is written in a computer language called Python using the GTK and GNOME libraries for the graphical interface. Gramps is supported on any computer system where these programs have been ported. Gramps is known to be run on Linux, BSD, Solaris, Windows and Mac OS X.</_tip>
|
||||
|
||||
<_tip number="71"><b>Open Source Software</b><br/>The Free/Libre and Open Source Software (FLOSS) development model means Gramps can be extended by any programmer since all of the source code is freely available under its license. So it's not just about free beer, it's also about freedom to study and change the tool. For more about Open Source software lookup the Free Software Foundation and the Open Source Initiative.</_tip>
|
||||
|
||||
<_tip number="72"><b>The Gramps Software License</b><br/>You are free to use and share Gramps with others. Gramps is freely distributable under the GNU General Public License, see http://www.gnu.org/licenses/licenses.html#GPL to read about the rights and restrictions of this license.</_tip>
|
||||
|
||||
<_tip number="73"><b>Gramps for Gnome or KDE?</b><br/>For Linux users Gramps works with whichever desktop environment you prefer. As long as the required GTK libraries are installed it will run fine.</_tip>
|
||||
|
||||
</tips>
|
||||
@@ -1,3 +1,10 @@
|
||||
gramps (5.1.3-1) focal; urgency=medium
|
||||
|
||||
* New release
|
||||
* Update debian/copyright for Alex Roitman
|
||||
|
||||
-- Ross Gammon <rosco2@ubuntu.com> Sun, 16 Aug 2020 20:23:34 +0200
|
||||
|
||||
gramps (5.1.2-1) unstable; urgency=medium
|
||||
|
||||
* New release
|
||||
|
||||
@@ -3,7 +3,7 @@ Upstream-Name: Gramps
|
||||
Source: https://gramps-project.org
|
||||
|
||||
Files: *
|
||||
Copyright: 2000-2007, Alex Roitman
|
||||
Copyright: 2000-2007, 2020 Alex Roitman
|
||||
2000-2002, Bruce J. DeGrasse
|
||||
2000-2008, Donald N. Allingham
|
||||
2000-2007, Martin Hawlisch
|
||||
|
||||
@@ -52,9 +52,14 @@ from gramps.gen.db.utils import make_database
|
||||
from gramps.gen.errors import DbError
|
||||
from gramps.gen.dbstate import DbState
|
||||
from gramps.gen.db.exceptions import (DbUpgradeRequiredError,
|
||||
DbSupportedError,
|
||||
BsddbDowngradeError,
|
||||
DbVersionError,
|
||||
DbPythonError,
|
||||
DbEnvironmentError,
|
||||
BsddbUpgradeRequiredError,
|
||||
BsddbDowngradeRequiredError,
|
||||
PythonUpgradeRequiredError,
|
||||
PythonDowngradeError,
|
||||
DbConnectionError)
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.utils.config import get_researcher
|
||||
@@ -171,8 +176,34 @@ class CLIDbLoader:
|
||||
try:
|
||||
self.dbstate.db.load(filename, self._pulse_progress, mode,
|
||||
username=username, password=password)
|
||||
except (DbConnectionError, DbSupportedError, DbUpgradeRequiredError,
|
||||
DbVersionError, DbPythonError, DbConnectionError) as msg:
|
||||
except DbEnvironmentError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except BsddbUpgradeRequiredError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except BsddbDowngradeRequiredError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except BsddbDowngradeError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except DbUpgradeRequiredError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except PythonDowngradeError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except PythonUpgradeRequiredError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except DbVersionError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except DbPythonError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except DbConnectionError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog(_("Cannot open database"), str(msg))
|
||||
except OSError as msg:
|
||||
|
||||
@@ -133,6 +133,7 @@ register('behavior.addmedia-image-dir', '')
|
||||
register('behavior.addmedia-relative-path', False)
|
||||
register('behavior.autoload', False)
|
||||
register('behavior.avg-generation-gap', 20)
|
||||
register('behavior.betawarn', False)
|
||||
register('behavior.check-for-addon-updates', 0)
|
||||
register('behavior.check-for-addon-update-types', ["new"])
|
||||
register('behavior.last-check-for-addon-updates', "1970/01/01")
|
||||
@@ -156,7 +157,7 @@ register('behavior.translator-needed', True)
|
||||
register('behavior.use-tips', False)
|
||||
register('behavior.welcome', 100)
|
||||
register('behavior.web-search-url', 'http://google.com/#&q=%(text)s')
|
||||
register('behavior.addons-url', "https://raw.githubusercontent.com/gramps-project/addons/master/gramps52")
|
||||
register('behavior.addons-url', "https://raw.githubusercontent.com/gramps-project/addons/master/gramps51")
|
||||
|
||||
register('database.backend', 'sqlite')
|
||||
register('database.compress-backup', True)
|
||||
@@ -185,7 +186,6 @@ register('geography.zoom_when_center', 12)
|
||||
register('geography.show_cross', False)
|
||||
register('geography.path', "")
|
||||
register('geography.use-keypad', True)
|
||||
register('geography.personal-map', "")
|
||||
|
||||
# note that other calls to "register" are done in realtime (when
|
||||
# needed), for instance to four 'interface.clipboard' variables --
|
||||
@@ -368,5 +368,3 @@ if not os.path.exists(CONFIGMAN.filename):
|
||||
CONFIGMAN.load()
|
||||
|
||||
config = CONFIGMAN
|
||||
if config.get('database.backend') == 'bsddb':
|
||||
config.set('database.backend', 'sqlite')
|
||||
|
||||
@@ -41,7 +41,7 @@ import uuid
|
||||
#-------------------------------------------------------------------------
|
||||
from .git_revision import get_git_revision
|
||||
from .constfunc import get_env_var
|
||||
from ..version import VERSION, VERSION_TUPLE, major_version, DEV_VERSION
|
||||
from ..version import VERSION, VERSION_TUPLE, major_version
|
||||
from .utils.resourcepath import ResourcePath
|
||||
from .utils.grampslocale import GrampsLocale
|
||||
|
||||
@@ -145,8 +145,7 @@ sys.path.insert(0, ROOT_DIR)
|
||||
git_revision = get_git_revision(ROOT_DIR).replace('\n', '')
|
||||
if sys.platform == 'win32' and git_revision == "":
|
||||
git_revision = get_git_revision(os.path.split(ROOT_DIR)[1])
|
||||
if DEV_VERSION:
|
||||
VERSION += git_revision
|
||||
VERSION += git_revision
|
||||
#VERSION += "-1"
|
||||
|
||||
#
|
||||
|
||||
@@ -290,8 +290,7 @@ class DateDisplayDE(DateDisplay):
|
||||
|
||||
formats = (
|
||||
"JJJJ-MM-DD (ISO)", "Numerisch", "Monat Tag Jahr",
|
||||
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr",
|
||||
"Numerisch mit führenden Nullen"
|
||||
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr"
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
@@ -344,18 +343,6 @@ class DateDisplayDE(DateDisplay):
|
||||
else:
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
self.long_months[date_val[1]], year)
|
||||
elif self.format == 6:
|
||||
# day.month_number.year with leading zeros
|
||||
if date_val[3]:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
value = str(date_val[2])
|
||||
else:
|
||||
value = self.dhformat.replace('%m', str(date_val[1])
|
||||
.zfill(2))
|
||||
value = value.replace('%d', str(date_val[0]).zfill(2))
|
||||
value = value.replace('%Y', str(date_val[2]))
|
||||
else:
|
||||
# day. month_abbreviation year
|
||||
if date_val[0] == 0:
|
||||
|
||||
@@ -32,7 +32,7 @@ database to fetch data from). Thus, dbstate.db cannot be left as 'None' because
|
||||
None has no 'is_open' attribute. Therefore this database class is provided so
|
||||
that it can be instantiated for dbstate.db.
|
||||
|
||||
FIXME: Ideally, only is_open() needs to be implemented here, because that is the
|
||||
FIXME: Ideally, only is_open() needs to be implemented here, bacause that is the
|
||||
only method that should really be called, but the Gramps code is not perfect,
|
||||
and many other methods are called. Calls of other methods could be considered
|
||||
bugs, so when these are fixed, this class could be reduced.
|
||||
@@ -52,7 +52,6 @@ methods should be changed to generate exceptions. Possibly by globally changing
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import logging
|
||||
import os
|
||||
import inspect
|
||||
from abc import ABCMeta
|
||||
from types import FunctionType
|
||||
@@ -160,10 +159,12 @@ def wrapper(method):
|
||||
"""
|
||||
class_name = args[0].__class__.__name__
|
||||
func_name = method.__name__
|
||||
caller_frame = inspect.stack()[1]
|
||||
frame = inspect.currentframe()
|
||||
c_frame = frame.f_back
|
||||
c_code = c_frame.f_code
|
||||
LOG.debug('calling %s.%s()... from file %s, line %s in %s',
|
||||
class_name, func_name, os.path.split(caller_frame[1])[1],
|
||||
caller_frame[2], caller_frame[3])
|
||||
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name)
|
||||
return method(*args, **keywargs)
|
||||
return wrapped
|
||||
|
||||
@@ -757,14 +758,6 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})):
|
||||
LOG.warning("database is closed")
|
||||
return 0
|
||||
|
||||
def get_number_of_citations(self):
|
||||
"""
|
||||
Return the number of citations currently in the database.
|
||||
"""
|
||||
if not self.db_is_open:
|
||||
LOG.warning("database is closed")
|
||||
return 0
|
||||
|
||||
def get_number_of_tags(self):
|
||||
"""
|
||||
Return the number of tags currently in the database.
|
||||
|
||||
@@ -122,6 +122,121 @@ class DbPythonError(Exception):
|
||||
'min_vers': self.min_vers,
|
||||
'max_vers': self.max_vers}
|
||||
|
||||
class BsddbDowngradeError(Exception):
|
||||
"""
|
||||
Error used to report that the Berkeley database used to create the family
|
||||
tree is of a version that is too new to be supported by the current version.
|
||||
"""
|
||||
def __init__(self, env_version, bdb_version):
|
||||
Exception.__init__(self)
|
||||
self.env_version = str(env_version)
|
||||
self.bdb_version = str(bdb_version)
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load is in the Bsddb '
|
||||
'version %(env_version)s format. This version of Gramps uses '
|
||||
'Bsddb version %(bdb_version)s. So you are trying to load '
|
||||
'data created in a newer format into an older program, and '
|
||||
'this is bound to fail.\n\n'
|
||||
'You should start your '
|
||||
'%(bold_start)snewer%(bold_end)s version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree. You can then import '
|
||||
'this backup into this version of Gramps.') % {
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'html_end' : '</a>' ,
|
||||
'bold_start' : '<b>' ,
|
||||
'bold_end' : '</b>' ,
|
||||
'env_version' : self.env_version,
|
||||
'bdb_version' : self.bdb_version }
|
||||
|
||||
class BsddbDowngradeRequiredError(Exception):
|
||||
"""
|
||||
Error used to report that the Berkeley database used to create the family
|
||||
tree is of a version that is newer than the current version, but it may be
|
||||
possible to open the tree, because the difference is only a point upgrade
|
||||
(i.e. a difference in the last digit of the version tuple).
|
||||
"""
|
||||
def __init__(self, env_version, bdb_version):
|
||||
Exception.__init__(self)
|
||||
self.env_version = str(env_version)
|
||||
self.bdb_version = str(bdb_version)
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load is in the Bsddb '
|
||||
'version %(env_version)s format. This version of Gramps uses '
|
||||
'Bsddb version %(bdb_version)s. So you are trying to load '
|
||||
'data created in a newer format into an older program. In '
|
||||
'this particular case, the difference is very small, so it '
|
||||
'may work.\n\n'
|
||||
'If you have not already made a backup of your Family Tree, '
|
||||
'then you should start your '
|
||||
'%(bold_start)snewer%(bold_end)s version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree.') % {
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'html_end' : '</a>' ,
|
||||
'bold_start' : '<b>' ,
|
||||
'bold_end' : '</b>' ,
|
||||
'env_version' : self.env_version,
|
||||
'bdb_version' : self.bdb_version }
|
||||
|
||||
class BsddbUpgradeRequiredError(Exception):
|
||||
"""
|
||||
Error used to report that the Berkeley database used to create the family
|
||||
tree is of a version that is too new to be supported by the current version.
|
||||
"""
|
||||
def __init__(self, env_version, bsddb_version):
|
||||
Exception.__init__(self)
|
||||
self.env_version = str(env_version)
|
||||
self.bsddb_version = str(bsddb_version)
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load is in the Bsddb '
|
||||
'version %(env_version)s format. This version of Gramps uses '
|
||||
'Bsddb version %(bdb_version)s. Therefore you cannot load '
|
||||
'this Family Tree without upgrading the Bsddb version of the '
|
||||
'Family Tree.\n\n'
|
||||
'Opening the Family Tree with this version of Gramps might '
|
||||
'irretrievably corrupt your Family Tree. You are strongly '
|
||||
'advised to backup your Family Tree.\n\n'
|
||||
'If you have not already made a backup of your Family Tree, '
|
||||
'then you should start your %(bold_start)sold%(bold_end)s '
|
||||
'version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree.') % {
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'html_end' : '</a>' ,
|
||||
'bold_start' : '<b>' ,
|
||||
'bold_end' : '</b>' ,
|
||||
'env_version' : self.env_version,
|
||||
'bdb_version' : self.bsddb_version }
|
||||
|
||||
class DbEnvironmentError(Exception):
|
||||
"""
|
||||
Error used to report that the database 'environment' could not be opened.
|
||||
Most likely, the database was created by a different version of the underlying database engine.
|
||||
"""
|
||||
def __init__(self, msg):
|
||||
Exception.__init__(self)
|
||||
self.msg = msg
|
||||
|
||||
def __str__(self):
|
||||
return (_("Gramps has detected a problem in opening the 'environment' "
|
||||
"of the underlying Berkeley database used to store this "
|
||||
"Family Tree. The most likely cause "
|
||||
"is that the database was created with an old version "
|
||||
"of the Berkeley database program, "
|
||||
"and you are now using a new version. "
|
||||
"It is quite likely that your database has not been "
|
||||
"changed by Gramps.\nIf possible, you should revert to your "
|
||||
"old version of Gramps and its support software; export "
|
||||
"your database to XML; close the database; "
|
||||
"then upgrade again "
|
||||
"to this version of Gramps and import the XML file "
|
||||
"in an empty Family Tree. Alternatively, it may be possible "
|
||||
"to use the Berkeley database recovery tools.")
|
||||
+ '\n\n' + str(self.msg))
|
||||
|
||||
class DbUpgradeRequiredError(Exception):
|
||||
"""
|
||||
@@ -160,6 +275,73 @@ class DbUpgradeRequiredError(Exception):
|
||||
'oldschema' : self.oldschema,
|
||||
'newschema' : self.newschema }
|
||||
|
||||
class PythonDowngradeError(Exception):
|
||||
"""
|
||||
Error used to report that the Python version used to create the family tree
|
||||
(i.e. Python3) is a version that is newer than the current version
|
||||
(i.e. Python2), so the Family Tree cannot be opened
|
||||
"""
|
||||
def __init__(self, db_python_version, current_python_version):
|
||||
Exception.__init__(self)
|
||||
self.db_python_version = str(db_python_version)
|
||||
self.current_python_version = str(current_python_version)
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load was created with '
|
||||
'Python version %(db_python_version)s. This version of Gramps '
|
||||
'uses Python version %(current_python_version)s. So you are '
|
||||
'trying to load '
|
||||
'data created in a newer format into an older program, and '
|
||||
'this is bound to fail.\n\n'
|
||||
'You should start your '
|
||||
'%(bold_start)snewer%(bold_end)s version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree. You can then import '
|
||||
'this backup into this version of Gramps.') % {
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'html_end' : '</a>' ,
|
||||
'bold_start' : '<b>' ,
|
||||
'bold_end' : '</b>' ,
|
||||
'db_python_version': self.db_python_version,
|
||||
'current_python_version': self.current_python_version }
|
||||
|
||||
class PythonUpgradeRequiredError(Exception):
|
||||
"""
|
||||
Error used to report that the Python version used to create the family tree
|
||||
(i.e. Python2) is earlier than the current Python version (i.e. Python3), so
|
||||
the Family Tree needs to be upgraded.
|
||||
"""
|
||||
def __init__(self, db_python_version, current_python_version):
|
||||
Exception.__init__(self)
|
||||
self.db_python_version = str(db_python_version)
|
||||
self.current_python_version = str(current_python_version)
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load is in the Python '
|
||||
'version %(db_python_version)s format. This version of Gramps '
|
||||
'uses Python version %(current_python_version)s. Therefore '
|
||||
'you cannot load this Family Tree without upgrading the '
|
||||
'Python version of the Family Tree.\n\n'
|
||||
'If you upgrade then you won\'t be able to use the previous '
|
||||
'version of Gramps, even if you subsequently '
|
||||
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
|
||||
'%(wiki_manual_export_html_start)sexport%(html_end)s '
|
||||
'your upgraded Family Tree.\n\n'
|
||||
'Upgrading is a difficult task which could irretrievably '
|
||||
'corrupt your Family Tree if it is interrupted or fails.\n\n'
|
||||
'If you have not already made a backup of your Family Tree, '
|
||||
'then you should start your %(bold_start)sold%(bold_end)s '
|
||||
'version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree.') % {
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
|
||||
'wiki_manual_export_html_start' : URL_EXPORT_START ,
|
||||
'html_end' : '</a>' ,
|
||||
'bold_start' : '<b>' ,
|
||||
'bold_end' : '</b>' ,
|
||||
'db_python_version': self.db_python_version,
|
||||
'current_python_version': self.current_python_version }
|
||||
|
||||
class DbConnectionError(Exception):
|
||||
"""
|
||||
@@ -178,35 +360,6 @@ class DbConnectionError(Exception):
|
||||
'message': self.msg,
|
||||
'settings_file': self.settings_file}
|
||||
|
||||
|
||||
class DbSupportedError(Exception):
|
||||
"""
|
||||
Error used to report that a database is no longer supported.
|
||||
"""
|
||||
def __init__(self, msg):
|
||||
Exception.__init__(self)
|
||||
self.msg = msg
|
||||
|
||||
def __str__(self):
|
||||
return _('The Family Tree you are trying to load is in the %(dbtype)s '
|
||||
'database, which is no longer supported.\nTherefore you '
|
||||
'cannot load this Family Tree without upgrading.\n\n'
|
||||
'If you upgrade then you won\'t be able to use the previous '
|
||||
'version of Gramps, even if you subsequently '
|
||||
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
|
||||
'%(wiki_manual_export_html_start)sexport%(html_end)s '
|
||||
'your upgraded Family Tree.\n\n'
|
||||
'You are strongly advised to backup your Family Tree.\n\n'
|
||||
'If you have not already made a backup of your Family Tree, '
|
||||
'then you should start your previous version of Gramps and '
|
||||
'%(wiki_backup_html_start)smake a backup%(html_end)s '
|
||||
'of your Family Tree.') % {
|
||||
'dbtype' : self.msg,
|
||||
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
|
||||
'wiki_manual_export_html_start' : URL_EXPORT_START ,
|
||||
'wiki_backup_html_start' : URL_BACKUP1_START ,
|
||||
'html_end' : '</a>'}
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""
|
||||
Call this from the CLI (in order to find the imported modules):
|
||||
@@ -217,8 +370,20 @@ if __name__ == "__main__":
|
||||
|
||||
print("\nDbVersionError:\n",
|
||||
DbVersionError('1.6.0', '1.5.0', '1.5.1'))
|
||||
print("\nBsddbDowngradeError:\n",
|
||||
BsddbDowngradeError('4.8.30', '4.8.29'))
|
||||
print("\nBsddbDowngradeRequiredError:\n",
|
||||
BsddbDowngradeRequiredError('4.8.30', '4.8.29'))
|
||||
print("\nBsddbUpgradeRequiredError:\n",
|
||||
BsddbUpgradeRequiredError('4.8.29', '4.8.30'))
|
||||
print("\nDbEnvironmentError:\n",
|
||||
DbEnvironmentError('test message'))
|
||||
print("\nDbUpgradeRequiredError:\n",
|
||||
DbUpgradeRequiredError('1.5.1', '1.6.0'))
|
||||
print("\nPythonDowngradeError:\n",
|
||||
PythonDowngradeError('3', '2'))
|
||||
print("\nPythonUpgradeRequiredError:\n",
|
||||
PythonUpgradeRequiredError('2', '3'))
|
||||
sys.exit(0)
|
||||
|
||||
print("\nxxx:\n",
|
||||
|
||||
@@ -47,7 +47,7 @@ from . import (DbReadBase, DbWriteBase, DbUndo, DBLOGNAME, DBUNDOFN,
|
||||
REPOSITORY_KEY, NOTE_KEY, TAG_KEY, TXNADD, TXNUPD, TXNDEL,
|
||||
KEY_TO_NAME_MAP, DBMODE_R, DBMODE_W)
|
||||
from .utils import write_lock_file, clear_lock_file
|
||||
from .exceptions import DbVersionError, DbUpgradeRequiredError
|
||||
from .exceptions import DbVersionError
|
||||
from ..errors import HandleError
|
||||
from ..utils.callback import Callback
|
||||
from ..updatecallback import UpdateCallback
|
||||
@@ -312,7 +312,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
|
||||
__callback_map = {}
|
||||
|
||||
VERSION = (20, 0, 0)
|
||||
VERSION = (18, 0, 0)
|
||||
|
||||
def __init__(self, directory=None):
|
||||
DbReadBase.__init__(self)
|
||||
@@ -537,7 +537,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
self.transaction = None
|
||||
self.abort_possible = True
|
||||
self._bm_changes = 0
|
||||
self.has_changed = 0 # Also gives commits since startup
|
||||
self.has_changed = False
|
||||
self.surname_list = []
|
||||
self.genderStats = GenderStats() # can pass in loaded stats as dict
|
||||
self.owner = Researcher()
|
||||
@@ -660,21 +660,12 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
|
||||
self.db_is_open = True
|
||||
|
||||
# Check on db version to see if we need upgrade or too new
|
||||
# Check on db version to see if too new
|
||||
dbversion = int(self._get_metadata('version', default='0'))
|
||||
if dbversion > self.VERSION[0]:
|
||||
self.close()
|
||||
raise DbVersionError(dbversion, 18, self.VERSION[0])
|
||||
|
||||
if not self.readonly and dbversion < self.VERSION[0]:
|
||||
LOG.debug("Schema upgrade required from %s to %s",
|
||||
dbversion, self.VERSION[0])
|
||||
if force_schema_upgrade:
|
||||
self._gramps_upgrade(dbversion, directory, callback)
|
||||
else:
|
||||
self.close()
|
||||
raise DbUpgradeRequiredError(dbversion, self.VERSION[0])
|
||||
|
||||
def _close(self):
|
||||
"""
|
||||
Close database backend.
|
||||
@@ -2479,47 +2470,3 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
enclosed_by = placeref.ref
|
||||
break
|
||||
return enclosed_by
|
||||
|
||||
def _gramps_upgrade(self, version, directory, callback=None):
|
||||
"""
|
||||
Here we do the calls for stepwise schema upgrades.
|
||||
We assume that we need to rebuild secondary and reference maps.
|
||||
"""
|
||||
UpdateCallback.__init__(self, callback)
|
||||
|
||||
start = time.time()
|
||||
|
||||
from gramps.gen.db.upgrade import (
|
||||
gramps_upgrade_14, gramps_upgrade_15, gramps_upgrade_16,
|
||||
gramps_upgrade_17, gramps_upgrade_18, gramps_upgrade_19,
|
||||
gramps_upgrade_20)
|
||||
|
||||
if version < 14:
|
||||
gramps_upgrade_14(self)
|
||||
if version < 15:
|
||||
gramps_upgrade_15(self)
|
||||
if version < 16:
|
||||
gramps_upgrade_16(self)
|
||||
if version < 17:
|
||||
gramps_upgrade_17(self)
|
||||
if version < 18:
|
||||
gramps_upgrade_18(self)
|
||||
if version < 19:
|
||||
gramps_upgrade_19(self)
|
||||
if version < 20:
|
||||
gramps_upgrade_20(self)
|
||||
|
||||
self.rebuild_secondary(callback)
|
||||
self.reindex_reference_map(callback)
|
||||
self.reset()
|
||||
|
||||
self.set_schema_version(self.VERSION[0])
|
||||
LOG.debug("Upgrade time: %d seconds" % int(time.time() - start))
|
||||
|
||||
def get_schema_version(self):
|
||||
""" Return current schema version as an int """
|
||||
return int(self._get_metadata('version', default='0'))
|
||||
|
||||
def set_schema_version(self, value):
|
||||
""" set the current schema version """
|
||||
self._set_metadata('version', str(value))
|
||||
|
||||
@@ -78,15 +78,13 @@ class DbTxn(defaultdict):
|
||||
|
||||
elapsed_time = time.time() - self.start_time
|
||||
if __debug__:
|
||||
caller_frame = inspect.stack()[1]
|
||||
frame = inspect.currentframe()
|
||||
c_frame = frame.f_back
|
||||
c_code = c_frame.f_code
|
||||
_LOG.debug(" **** DbTxn %s exited. Called from file %s, "
|
||||
"line %s, in %s **** %.2f seconds" %
|
||||
((hex(id(self)),)+
|
||||
(os.path.split(caller_frame[1])[1],)+
|
||||
tuple(caller_frame[i] for i in range(2, 4))+
|
||||
(elapsed_time,)
|
||||
)
|
||||
)
|
||||
"line %s, in %s **** %.2f seconds",
|
||||
hex(id(self)), c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name, elapsed_time)
|
||||
|
||||
return False
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ from ..const import PLUGINS_DIR, USER_PLUGINS
|
||||
from ..constfunc import win, get_env_var
|
||||
from ..config import config
|
||||
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
|
||||
from ..const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -70,12 +72,14 @@ def make_database(plugin_id):
|
||||
database = getattr(mod, pdata.databaseclass)
|
||||
db = database()
|
||||
import inspect
|
||||
caller_frame = inspect.stack()[1]
|
||||
frame = inspect.currentframe()
|
||||
c_frame = frame.f_back
|
||||
c_code = c_frame.f_code
|
||||
_LOG.debug("Database class instance created Class:%s instance:%s. "
|
||||
"Called from File %s, line %s, in %s"
|
||||
% ((db.__class__.__name__, hex(id(db)))
|
||||
+ (os.path.split(caller_frame[1])[1],)
|
||||
+ tuple(caller_frame[i] for i in range(2, 4))))
|
||||
"Called from File %s, line %s, in %s",
|
||||
db.__class__.__name__, hex(id(db)), c_code.co_filename,
|
||||
c_frame.f_lineno, c_code.co_name)
|
||||
|
||||
return db
|
||||
else:
|
||||
raise Exception("can't load database backend: '%s'" % plugin_id)
|
||||
@@ -209,8 +213,8 @@ def write_lock_file(name):
|
||||
if win():
|
||||
user = get_env_var('USERNAME')
|
||||
host = get_env_var('USERDOMAIN')
|
||||
if host is None:
|
||||
host = ""
|
||||
if not user:
|
||||
user = _("Unknown")
|
||||
else:
|
||||
host = os.uname()[1]
|
||||
# An ugly workaround for os.getlogin() issue with Konsole
|
||||
|
||||
@@ -29,7 +29,6 @@ Provide the database state class
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
import sys
|
||||
import os
|
||||
import logging
|
||||
import inspect
|
||||
|
||||
@@ -88,10 +87,12 @@ class DbState(Callback):
|
||||
"""
|
||||
class_name = self.__class__.__name__
|
||||
func_name = "is_open"
|
||||
caller_frame = inspect.stack()[1]
|
||||
frame = inspect.currentframe()
|
||||
c_frame = frame.f_back
|
||||
c_code = c_frame.f_code
|
||||
_LOG.debug('calling %s.%s()... from file %s, line %s in %s',
|
||||
class_name, func_name, os.path.split(caller_frame[1])[1],
|
||||
caller_frame[2], caller_frame[3])
|
||||
class_name, func_name, c_code.co_filename, c_frame.f_lineno,
|
||||
c_code.co_name)
|
||||
return (self.db is not None) and self.db.is_open()
|
||||
|
||||
def change_database(self, database):
|
||||
|
||||
@@ -28,7 +28,6 @@ from ._hascitation import HasCitation
|
||||
from ._allcitations import AllCitations
|
||||
from ._changedsince import ChangedSince
|
||||
from ._citationprivate import CitationPrivate
|
||||
from ._hasattribute import HasAttribute
|
||||
from ._hasgallery import HasGallery
|
||||
from ._hasidof import HasIdOf
|
||||
from ._hasnote import HasNote
|
||||
@@ -51,7 +50,6 @@ editor_rule_list = [
|
||||
AllCitations,
|
||||
ChangedSince,
|
||||
CitationPrivate,
|
||||
HasAttribute,
|
||||
HasGallery,
|
||||
HasIdOf,
|
||||
HasNote,
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2008 Gary Burton
|
||||
# Copyright (C) 2019 Matthias Kemmer
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from ....const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from .._hasattributebase import HasAttributeBase
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# HasAttribute
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
class HasAttribute(HasAttributeBase):
|
||||
"""Rule that checks for a citation with a particular attribute"""
|
||||
|
||||
labels = [_('Citation attribute:'), _('Value:')]
|
||||
name = _('Citations with the attribute <attribute>')
|
||||
description = _("Matches citations with the attribute "
|
||||
"of a particular value")
|
||||
@@ -29,7 +29,6 @@ from ._disconnected import Disconnected
|
||||
from ._everyone import Everyone
|
||||
from ._familywithincompleteevent import FamilyWithIncompleteEvent
|
||||
from ._hasaddress import HasAddress
|
||||
from ._hasaddresstext import HasAddressText
|
||||
from ._hasalternatename import HasAlternateName
|
||||
from ._hasassociation import HasAssociation
|
||||
from ._hasattribute import HasAttribute
|
||||
@@ -126,7 +125,6 @@ editor_rule_list = [
|
||||
IsBookmarked,
|
||||
HasAlternateName,
|
||||
HasAddress,
|
||||
HasAddressText,
|
||||
HasAssociation,
|
||||
HasIdOf,
|
||||
HasLDS,
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
# Copyright (C) 2008 Jerome Rapinat
|
||||
# Copyright (C) 2008 Benny Malengier
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from .. import Rule
|
||||
from ....const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# HasAddressText
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
class HasAddressText(Rule):
|
||||
"""Rule that checks for text in personal addresses"""
|
||||
|
||||
labels = [_('Text:')]
|
||||
name = _('People with an address containing <text>')
|
||||
description = _("Matches people with a personal address containing "
|
||||
"the given text")
|
||||
category = _('General filters')
|
||||
allow_regex = True
|
||||
|
||||
def apply(self, db, person):
|
||||
for address in person.get_address_list():
|
||||
for string in address.get_text_data_list():
|
||||
if self.match_substring(0, string):
|
||||
return True
|
||||
return False
|
||||
@@ -52,7 +52,7 @@ class MatchesEventFilter(MatchesEventFilterBase):
|
||||
name = _('Persons with events matching the <event filter>')
|
||||
description = _("Matches persons who have events that match a certain"
|
||||
" event filter")
|
||||
category = _('General filters')
|
||||
category = _('Event filters')
|
||||
|
||||
# we want to have this filter show event filters
|
||||
namespace = 'Event'
|
||||
|
||||
@@ -37,10 +37,10 @@ import re
|
||||
# Gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gramps.gen.errors import FilterError
|
||||
from ....const import GRAMPS_LOCALE as glocale
|
||||
from .. import Rule
|
||||
from ....utils.place import conv_lat_lon
|
||||
from gramps.gen.errors import FilterError
|
||||
|
||||
_ = glocale.translation.sgettext
|
||||
|
||||
@@ -81,13 +81,13 @@ class WithinArea(Rule):
|
||||
"D.D8")
|
||||
if self.latitude is None or self.longitude is None:
|
||||
raise FilterError(_("Cannot use the filter 'within area'"),
|
||||
_("The place you selected contains bad"
|
||||
" coordinates. Please, run the tool "
|
||||
"'clean input data'"))
|
||||
_("The place you selected contains bad coordinates. "
|
||||
"Please, run the tool 'clean input data'"))
|
||||
return
|
||||
|
||||
val = self.list[1]
|
||||
if isinstance(val, str):
|
||||
val = re.sub(r"\D", "", val) # suppress all alpha characters
|
||||
val = re.sub(r"\D", "", val) # suppress all alpha characters
|
||||
value = int(val)
|
||||
unit = int(self.list[2])
|
||||
# earth perimeter in kilometers for latitude
|
||||
|
||||
@@ -25,7 +25,6 @@ Package providing filter rules for Gramps.
|
||||
from ._allrepos import AllRepos
|
||||
from ._hasidof import HasIdOf
|
||||
from ._regexpidof import RegExpIdOf
|
||||
from ._hasattribute import HasAttribute
|
||||
from ._hasnoteregexp import HasNoteRegexp
|
||||
from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf
|
||||
from ._hasreferencecountof import HasReferenceCountOf
|
||||
@@ -38,7 +37,6 @@ from ._hastag import HasTag
|
||||
|
||||
editor_rule_list = [
|
||||
AllRepos,
|
||||
HasAttribute,
|
||||
HasIdOf,
|
||||
RegExpIdOf,
|
||||
HasNoteRegexp,
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2008 Gary Burton
|
||||
# Copyright (C) 2019 Matthias Kemmer
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from ....const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from .._hasattributebase import HasAttributeBase
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# HasAttribute
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
class HasAttribute(HasAttributeBase):
|
||||
"""Rule that checks for a repository with a particular attribute"""
|
||||
|
||||
labels = [_('Repository attribute:'), _('Value:')]
|
||||
name = _('Repositories with the attribute <attribute>')
|
||||
description = _("Matches repositories with the attribute "
|
||||
"of a particular value")
|
||||
@@ -27,7 +27,6 @@ Package providing filter rules for Gramps.
|
||||
from .._hassourcebase import HasSourceBase as HasSource
|
||||
|
||||
from ._allsources import AllSources
|
||||
from ._hasattribute import HasAttribute
|
||||
from ._hasgallery import HasGallery
|
||||
from ._hasidof import HasIdOf
|
||||
from ._regexpidof import RegExpIdOf
|
||||
@@ -46,7 +45,6 @@ from ._hastag import HasTag
|
||||
|
||||
editor_rule_list = [
|
||||
AllSources,
|
||||
HasAttribute,
|
||||
HasGallery,
|
||||
HasIdOf,
|
||||
RegExpIdOf,
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2008 Gary Burton
|
||||
# Copyright (C) 2019 Matthias Kemmer
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from ....const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
from .._hasattributebase import HasAttributeBase
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
#
|
||||
# HasAttribute
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
class HasAttribute(HasAttributeBase):
|
||||
"""Rule that checks for a source with a particular attribute"""
|
||||
|
||||
labels = [_('Source attribute:'), _('Value:')]
|
||||
name = _('Sources with the attribute <attribute>')
|
||||
description = _("Matches sources with the attribute "
|
||||
"of a particular value")
|
||||
@@ -99,7 +99,8 @@ class BaseTest(unittest.TestCase):
|
||||
stime = perf_counter()
|
||||
results = filter_.apply(self.db)
|
||||
if __debug__:
|
||||
rulename = inspect.stack()[1][3]
|
||||
frame = inspect.currentframe()
|
||||
rulename = frame.f_back.f_code.co_name
|
||||
print("%s: %.2f\n" % (rulename, perf_counter() - stime))
|
||||
return set(results)
|
||||
|
||||
|
||||
@@ -29,8 +29,6 @@ _type_map = {
|
||||
'application/x-gedcom' : 'GEDCOM database',
|
||||
'application/x-gramps-package': 'Gramps package',
|
||||
'image/jpeg' : 'JPEG image',
|
||||
'image/tiff' : 'TIFF image',
|
||||
'image/png' : 'PNG image',
|
||||
'application/pdf' : 'PDF document',
|
||||
'text/rtf' : 'Rich Text File',
|
||||
}
|
||||
|
||||
@@ -113,6 +113,10 @@ else:
|
||||
_GS_CMD = where_is("gs")
|
||||
|
||||
|
||||
def esc(id_txt):
|
||||
return id_txt.replace('"', '\\"')
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# GVOptions
|
||||
@@ -575,7 +579,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
text += ' URL="%s"' % url
|
||||
|
||||
text += " ]"
|
||||
self.write(' "%s" %s;\n' % (node_id, text))
|
||||
self.write(' "%s" %s;\n' % (esc(node_id), text))
|
||||
|
||||
def add_link(self, id1, id2, style="", head="", tail="", comment=""):
|
||||
"""
|
||||
@@ -583,7 +587,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
Implements GVDocBase.add_link().
|
||||
"""
|
||||
self.write(' "%s" -> "%s"' % (id1, id2))
|
||||
self.write(' "%s" -> "%s"' % (esc(id1), esc(id2)))
|
||||
|
||||
if style or head or tail:
|
||||
self.write(' [')
|
||||
@@ -635,7 +639,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
Implements GVDocBase.add_samerank().
|
||||
"""
|
||||
self.write(' {rank=same "%s" "%s"}\n' % (id1, id2))
|
||||
self.write(' {rank=same "%s" "%s"}\n' % (esc(id1), esc(id2)))
|
||||
|
||||
def rewrite_label(self, id, label):
|
||||
"""
|
||||
@@ -643,7 +647,7 @@ class GVDocBase(BaseDoc, GVDoc):
|
||||
|
||||
Implements GVDocBase.rewrite_label().
|
||||
"""
|
||||
self.write(' "%s" [label = "%s"]\n' % (id, label))
|
||||
self.write(' "%s" [label = "%s"]\n' % (esc(id), label))
|
||||
|
||||
def start_subgraph(self, graph_id):
|
||||
""" Implement GVDocBase.start_subgraph() """
|
||||
|
||||
@@ -587,47 +587,6 @@ class TreeDocBase(BaseDoc, TreeDoc):
|
||||
self.write_end()
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# TreeGraphDoc
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
class TreeGraphDoc(TreeDocBase):
|
||||
"""
|
||||
TreeGraphDoc implementation that generates a .graph file.
|
||||
"""
|
||||
|
||||
def write_start(self):
|
||||
"""
|
||||
Write the start of the document - nothing for a graph file.
|
||||
"""
|
||||
pass
|
||||
|
||||
def start_tree(self, option_list):
|
||||
"""
|
||||
Write the start of a tree - nothing for a graph file.
|
||||
"""
|
||||
pass
|
||||
|
||||
def end_tree(self):
|
||||
"""
|
||||
Write the end of a tree - nothing for a graph file.
|
||||
"""
|
||||
pass
|
||||
|
||||
def write_end(self):
|
||||
"""
|
||||
Write the end of the document - nothing for a graph file.
|
||||
"""
|
||||
pass
|
||||
|
||||
def close(self):
|
||||
""" Implements TreeDocBase.close() """
|
||||
TreeDocBase.close(self)
|
||||
|
||||
with open(self._filename, 'w', encoding='utf-8') as texfile:
|
||||
texfile.write(self._tex.getvalue())
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# TreeTexDoc
|
||||
@@ -695,11 +654,6 @@ if _LATEX_FOUND:
|
||||
'mime' : "application/pdf",
|
||||
'class': TreePdfDoc}]
|
||||
|
||||
FORMATS += [{'type' : "graph",
|
||||
'ext' : "graph",
|
||||
'descr': _("Graph File for genealogytree"),
|
||||
'class': TreeGraphDoc}]
|
||||
|
||||
FORMATS += [{'type' : "tex",
|
||||
'ext' : "tex",
|
||||
'descr': _("LaTeX File"),
|
||||
|
||||
@@ -116,8 +116,9 @@ class Zipfile:
|
||||
os.mkdir(fullname)
|
||||
for name in self.get_files(names):
|
||||
fullname = os.path.join(path, name)
|
||||
with open(fullname, 'wb') as outfile:
|
||||
outfile.write(self.zip_obj.read(name))
|
||||
outfile = file(fullname, 'wb')
|
||||
outfile.write(self.zip_obj.read(name))
|
||||
outfile.close()
|
||||
|
||||
def extractfile(self, name):
|
||||
"""
|
||||
|
||||
@@ -324,12 +324,16 @@ class Callback:
|
||||
return
|
||||
|
||||
# Check signal exists
|
||||
frame = inspect.currentframe()
|
||||
c_frame = frame.f_back
|
||||
c_code = c_frame.f_code
|
||||
frame_info = (c_code.co_filename, c_frame.f_lineno, c_code.co_name)
|
||||
if signal_name not in self.__signal_map:
|
||||
self._warn("Attempt to emit to unknown signal: %s\n"
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
# check that the signal is not already being emitted. This prevents
|
||||
@@ -340,7 +344,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -358,7 +362,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
# type check arguments
|
||||
@@ -369,7 +373,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
if len(args) > 0:
|
||||
@@ -379,7 +383,7 @@ class Callback:
|
||||
" from: file: %s\n"
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4]))
|
||||
% ((str(signal_name), ) + frame_info))
|
||||
return
|
||||
|
||||
if arg_types is not None:
|
||||
@@ -391,7 +395,7 @@ class Callback:
|
||||
" line: %d\n"
|
||||
" func: %s\n"
|
||||
" arg passed was: %s, type of arg passed %s, type should be: %s\n"
|
||||
% ((str(signal_name), ) + inspect.stack()[1][1:4] +\
|
||||
% ((str(signal_name), ) + frame_info +\
|
||||
(args[i], repr(type(args[i])), repr(arg_types[i]))))
|
||||
return
|
||||
if signal_name in self.__callback_map:
|
||||
|
||||
@@ -161,12 +161,12 @@ def image_size(source):
|
||||
:returns: a tuple consisting of the width and height
|
||||
"""
|
||||
from gi.repository import GdkPixbuf
|
||||
from gi.repository import GLib
|
||||
from gi.repository import GObject
|
||||
try:
|
||||
img = GdkPixbuf.Pixbuf.new_from_file(source)
|
||||
width = img.get_width()
|
||||
height = img.get_height()
|
||||
except GLib.GError:
|
||||
except GObject.GError:
|
||||
width = 0
|
||||
height = 0
|
||||
return (width, height)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2013 John Ralls <jralls@ceridwen.us>
|
||||
# Copyright (C) 2020 Nick Hall <nick-h@gramps-project.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -36,25 +35,6 @@ class ResourcePath:
|
||||
|
||||
It should be called only by const.py; other code should retrieve the
|
||||
paths from there.
|
||||
|
||||
Attempt to derive the resource path from the package path assuming that
|
||||
one of the three main installation schemes has been used.
|
||||
|
||||
The package path will be one of the following:
|
||||
|
||||
<prefix>/lib/pythonX.Y/site-packages
|
||||
<prefix>\Lib\site-packages
|
||||
|
||||
<home>/lib/python
|
||||
|
||||
<userbase>/lib/pythonX.Y/site-packages
|
||||
<userbase>\PythonXY\site-packages
|
||||
|
||||
Where <prefix>, <home> and <userbase> are the resource paths used in the
|
||||
Prefix, Home and User installation schemes.
|
||||
|
||||
The use of the command line option "--install-data" in the setup script
|
||||
is no longer supported.
|
||||
"""
|
||||
instance = None
|
||||
def __new__(cls):
|
||||
@@ -67,9 +47,9 @@ class ResourcePath:
|
||||
def __init__(self):
|
||||
if self.initialized:
|
||||
return
|
||||
package_path = os.path.abspath(os.path.join(os.path.dirname(
|
||||
__file__), '..', "..", ".."))
|
||||
installed = not os.path.exists(os.path.join(package_path, '.git'))
|
||||
resource_file = os.path.join(os.path.abspath(os.path.dirname(
|
||||
__file__)), 'resource-path')
|
||||
installed = os.path.exists(resource_file)
|
||||
if installed:
|
||||
test_path = os.path.join("gramps", "authors.xml")
|
||||
else:
|
||||
@@ -79,30 +59,27 @@ class ResourcePath:
|
||||
if (tmp_path and os.path.exists(os.path.join(tmp_path, test_path))):
|
||||
resource_path = tmp_path
|
||||
elif installed:
|
||||
base_path = None
|
||||
head, tail = os.path.split(package_path)
|
||||
if tail in ('site-packages', 'dist-packages'):
|
||||
# Prefix or User installation scheme
|
||||
head, tail = os.path.split(head)
|
||||
if tail.startswith('python'):
|
||||
base_path, tail = os.path.split(head)
|
||||
elif tail == 'Lib' or tail.startswith('Python'):
|
||||
base_path = head
|
||||
elif tail == 'python':
|
||||
# Home installation scheme
|
||||
base_path, tail = os.path.split(head)
|
||||
if base_path is not None:
|
||||
resource_path = os.path.join(base_path, 'share')
|
||||
else:
|
||||
LOG.error("Unable to determine resource path")
|
||||
try:
|
||||
with open(resource_file, encoding='utf-8',
|
||||
errors='strict') as fp:
|
||||
resource_path = fp.readline()
|
||||
except UnicodeError as err:
|
||||
LOG.exception("Encoding error while parsing resource path", err)
|
||||
sys.exit(1)
|
||||
except IOError as err:
|
||||
LOG.exception("Failed to open resource file", err)
|
||||
sys.exit(1)
|
||||
if not os.path.exists(os.path.join(resource_path, test_path)):
|
||||
LOG.error("Resource Path %s is invalid", resource_path)
|
||||
sys.exit(1)
|
||||
else:
|
||||
# Let's try to run from source without env['GRAMPS_RESOURCES']:
|
||||
resource_path = package_path
|
||||
|
||||
if (not os.path.exists(os.path.join(resource_path, test_path))):
|
||||
LOG.error("Resource Path %s is invalid", resource_path)
|
||||
sys.exit(1)
|
||||
resource_path = os.path.join(os.path.abspath(os.path.dirname(
|
||||
__file__)), '..', "..", "..")
|
||||
test_path = os.path.join("data", "authors.xml")
|
||||
if (not os.path.exists(os.path.join(resource_path, test_path))):
|
||||
LOG.error("Unable to determine resource path")
|
||||
sys.exit(1)
|
||||
|
||||
resource_path = os.path.abspath(resource_path)
|
||||
if installed:
|
||||
|
||||
@@ -58,7 +58,7 @@ class FileTest(unittest.TestCase):
|
||||
"""
|
||||
|
||||
# Create database
|
||||
db = make_database("sqlite")
|
||||
db = make_database("bsddb")
|
||||
path = get_empty_tempdir("utils_file_test")
|
||||
db.load(path)
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ from hashlib import md5
|
||||
# GTK/Gnome modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gi.repository import GLib
|
||||
from gi.repository import GObject
|
||||
from gi.repository import GdkPixbuf
|
||||
|
||||
try:
|
||||
@@ -98,7 +98,7 @@ def __get_gconf_string(key):
|
||||
"""
|
||||
try:
|
||||
val = CLIENT.get_string(key)
|
||||
except GLib.GError:
|
||||
except GObject.GError:
|
||||
val = None
|
||||
return str(val)
|
||||
|
||||
@@ -119,7 +119,7 @@ def __get_gconf_bool(key):
|
||||
"""
|
||||
try:
|
||||
val = CLIENT.get_bool(key)
|
||||
except GLib.GError:
|
||||
except GObject.GError:
|
||||
val = None
|
||||
return val
|
||||
|
||||
@@ -318,7 +318,7 @@ def get_thumbnail_image(src_file, mtype=None, rectangle=None, size=SIZE_NORMAL):
|
||||
try:
|
||||
filename = get_thumbnail_path(src_file, mtype, rectangle, size)
|
||||
return GdkPixbuf.Pixbuf.new_from_file(filename)
|
||||
except (GLib.GError, OSError):
|
||||
except (GObject.GError, OSError):
|
||||
if mtype:
|
||||
return find_mime_type_pixbuf(mtype)
|
||||
else:
|
||||
|
||||
@@ -76,7 +76,7 @@ _ = glocale.translation.gettext
|
||||
|
||||
try:
|
||||
# On Darwin sys.getdefaultencoding() is correct, on Win32 it's
|
||||
# sys.stdout.encoding, and on Linux they're both right.
|
||||
# sys.stdout.enoding, and on Linux they're both right.
|
||||
if mac():
|
||||
_encoding = sys.getdefaultencoding()
|
||||
else:
|
||||
@@ -483,7 +483,7 @@ def run():
|
||||
LOG.debug("A GUI is needed, set it up")
|
||||
try:
|
||||
from .gui.grampsgui import startgramps
|
||||
# no DISPLAY is a RuntimeError in an older pygtk (e.g. 2.17 in Fedora 14)
|
||||
# no DISPLAY is a RuntimeError in an older pygtk (e.g. F14's 2.17)
|
||||
except RuntimeError as msg:
|
||||
error += [(_("Configuration error:"), str(msg))]
|
||||
return error
|
||||
|
||||
@@ -471,27 +471,36 @@ class ClipCitation(ClipHandleWrapper):
|
||||
|
||||
def refresh(self):
|
||||
if self._handle:
|
||||
citation = clipdb.get_citation_from_handle(self._handle)
|
||||
if citation:
|
||||
self._title = citation.get_gramps_id()
|
||||
notelist = list(map(clipdb.get_note_from_handle,
|
||||
citation.get_note_list()))
|
||||
srctxtlist = [note for note in notelist
|
||||
if note.get_type() == NoteType.SOURCE_TEXT]
|
||||
page = citation.get_page()
|
||||
if not page:
|
||||
page = _('not available|NA')
|
||||
text = ""
|
||||
if srctxtlist:
|
||||
text = " ".join(srctxtlist[0].get().split())
|
||||
#String must be unicode for truncation to work for non
|
||||
#ascii characters
|
||||
text = str(text)
|
||||
if len(text) > 60:
|
||||
text = text[:60] + "..."
|
||||
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s") % {
|
||||
'pag' : page,
|
||||
'sourcetext' : text}
|
||||
try:
|
||||
citation = clipdb.get_citation_from_handle(self._handle)
|
||||
if citation:
|
||||
self._title = citation.get_gramps_id()
|
||||
notelist = list(map(clipdb.get_note_from_handle,
|
||||
citation.get_note_list()))
|
||||
srctxtlist = [note for note in notelist
|
||||
if note.get_type() == NoteType.SOURCE_TEXT]
|
||||
page = citation.get_page()
|
||||
if not page:
|
||||
page = _('not available|NA')
|
||||
text = ""
|
||||
if srctxtlist:
|
||||
text = " ".join(srctxtlist[0].get().split())
|
||||
#String must be unicode for truncation to work for non
|
||||
#ascii characters
|
||||
text = str(text)
|
||||
if len(text) > 60:
|
||||
text = text[:60] + "..."
|
||||
self._value = _("Volume/Page: %(pag)s -- %(sourcetext)s"
|
||||
) % { 'pag' : page,
|
||||
'sourcetext' : text}
|
||||
except:
|
||||
# We are in the Source tree view. The shortcuts only
|
||||
# work for citations.
|
||||
print("We cannot copy the source from this view."
|
||||
" Use drag and drop.")
|
||||
self._title = self._value = ''
|
||||
self._pickle = self._type = self._objclass = None
|
||||
self._handle = self._dbid = self._dbname = None
|
||||
|
||||
|
||||
class ClipRepoRef(ClipObjWrapper):
|
||||
@@ -1281,6 +1290,14 @@ class ClipboardListView:
|
||||
model.insert_before(node, data)
|
||||
else:
|
||||
model.insert_after(node, data)
|
||||
elif isinstance(data[1], ClipCitation):
|
||||
if data[3]:
|
||||
# we have a real citation
|
||||
model.append(data)
|
||||
#else:
|
||||
# We are in a Source treeview and trying
|
||||
# to copy a source with a shortcut.
|
||||
# Use drag and drop to do that.
|
||||
else:
|
||||
model.append(data)
|
||||
|
||||
|
||||
@@ -690,7 +690,7 @@ class GrampsPreferences(ConfigureDialog):
|
||||
hbox.pack_start(lwidget, False, False, 0)
|
||||
hbox.pack_start(self.color_scheme_box, False, False, 0)
|
||||
|
||||
restore_btn = Gtk.Button(label=_('Restore to defaults'))
|
||||
restore_btn = Gtk.Button(_('Restore to defaults'))
|
||||
restore_btn.set_tooltip_text(
|
||||
_('Restore colors for current theme to default.'))
|
||||
restore_btn.connect('clicked', self.restore_colors)
|
||||
@@ -1779,9 +1779,7 @@ class GrampsPreferences(ConfigureDialog):
|
||||
formats = [_("Never"),
|
||||
_("Every 15 minutes"),
|
||||
_("Every 30 minutes"),
|
||||
_("Every hour"),
|
||||
_("Every 12 hours"),
|
||||
_("Every day")]
|
||||
_("Every hour")]
|
||||
list(map(obox.append_text, formats))
|
||||
active = config.get('database.autobackup')
|
||||
obox.set_active(active)
|
||||
@@ -1811,8 +1809,6 @@ class GrampsPreferences(ConfigureDialog):
|
||||
for plugin in sorted(backend_plugins, key=lambda plugin: plugin.name):
|
||||
if plugin.id == default:
|
||||
active = count
|
||||
if plugin.id == 'bsddb':
|
||||
continue # bsddb is deprecated, so don't allow setting
|
||||
model.append(row=[count, plugin.name, plugin.id])
|
||||
count += 1
|
||||
obox.set_model(model)
|
||||
@@ -1832,10 +1828,12 @@ class GrampsPreferences(ConfigureDialog):
|
||||
Show dialog to choose media directory.
|
||||
"""
|
||||
f = Gtk.FileChooserDialog(title=_("Select media directory"),
|
||||
transient_for=self.window,
|
||||
action=Gtk.FileChooserAction.SELECT_FOLDER)
|
||||
f.add_buttons(_('_Cancel'), Gtk.ResponseType.CANCEL,
|
||||
_('_Apply'), Gtk.ResponseType.OK)
|
||||
parent=self.window,
|
||||
action=Gtk.FileChooserAction.SELECT_FOLDER,
|
||||
buttons=(_('_Cancel'),
|
||||
Gtk.ResponseType.CANCEL,
|
||||
_('_Apply'),
|
||||
Gtk.ResponseType.OK))
|
||||
mpath = media_path(self.dbstate.db)
|
||||
f.set_current_folder(os.path.dirname(mpath))
|
||||
|
||||
@@ -1880,10 +1878,12 @@ class GrampsPreferences(ConfigureDialog):
|
||||
Show dialog to choose backup directory.
|
||||
"""
|
||||
f = Gtk.FileChooserDialog(title=_("Select backup directory"),
|
||||
transient_for=self.window,
|
||||
action=Gtk.FileChooserAction.SELECT_FOLDER)
|
||||
f.add_buttons(_('_Cancel'), Gtk.ResponseType.CANCEL,
|
||||
_('_Apply'), Gtk.ResponseType.OK)
|
||||
parent=self.window,
|
||||
action=Gtk.FileChooserAction.SELECT_FOLDER,
|
||||
buttons=(_('_Cancel'),
|
||||
Gtk.ResponseType.CANCEL,
|
||||
_('_Apply'),
|
||||
Gtk.ResponseType.OK))
|
||||
backup_path = config.get('database.backup-path')
|
||||
if not backup_path:
|
||||
backup_path = config.get('database.path')
|
||||
@@ -2163,9 +2163,11 @@ class GrampsPreferences(ConfigureDialog):
|
||||
scrollw.set_size_request(600, 100)
|
||||
text = Gtk.Label()
|
||||
text.set_line_wrap(True)
|
||||
font_description = Pango.font_description_from_string(font)
|
||||
text.modify_font(font_description)
|
||||
self.activate_change_font()
|
||||
text.set_halign(Gtk.Align.START)
|
||||
text.set_markup("<span font='%s'>%s</span>" % (font, my_characters))
|
||||
text.set_text(my_characters)
|
||||
scrollw.add(text)
|
||||
scrollw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
||||
self.grid.attach(scrollw, 1, 7, 8, 1)
|
||||
@@ -2178,9 +2180,12 @@ class GrampsPreferences(ConfigureDialog):
|
||||
my_characters += symbols.get_death_symbol_for_char(death_symbl)
|
||||
text = Gtk.Label()
|
||||
text.set_line_wrap(True)
|
||||
font_description = Pango.font_description_from_string(font)
|
||||
text.modify_font(font_description)
|
||||
text.set_halign(Gtk.Align.START)
|
||||
text.set_markup("<big><big><big><big><span font='%s'>%s</span>"
|
||||
"</big></big></big></big>" % (font, my_characters))
|
||||
text.set_markup("<big><big><big><big>" +
|
||||
my_characters +
|
||||
"</big></big></big></big>")
|
||||
self.grid.attach(text, 1, 8, 8, 1)
|
||||
scrollw.show_all()
|
||||
text.show_all()
|
||||
|
||||
@@ -54,14 +54,18 @@ from gi.repository import GObject
|
||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||
from gramps.gen.db.dbconst import DBBACKEND
|
||||
from gramps.gen.db.utils import make_database
|
||||
from gramps.gen.db.upgrade import make_zip_backup
|
||||
_ = glocale.translation.gettext
|
||||
from gramps.cli.grampscli import CLIDbLoader
|
||||
from gramps.gen.config import config
|
||||
from gramps.gen.db.exceptions import (DbUpgradeRequiredError,
|
||||
BsddbDowngradeError,
|
||||
DbVersionError,
|
||||
DbPythonError,
|
||||
DbSupportedError,
|
||||
DbEnvironmentError,
|
||||
BsddbUpgradeRequiredError,
|
||||
BsddbDowngradeRequiredError,
|
||||
PythonUpgradeRequiredError,
|
||||
PythonDowngradeError,
|
||||
DbConnectionError)
|
||||
from .pluginmanager import GuiPluginManager
|
||||
from .dialog import (DBErrorDialog, ErrorDialog, QuestionDialog2,
|
||||
@@ -159,70 +163,130 @@ class DbLoader(CLIDbLoader):
|
||||
if not os.access(filename, os.W_OK):
|
||||
mode = "r"
|
||||
self._warn(_('Read only database'),
|
||||
_('You do not have write access '
|
||||
'to the selected file.'))
|
||||
_('You do not have write access '
|
||||
'to the selected file.'))
|
||||
else:
|
||||
mode = "w"
|
||||
else:
|
||||
mode = 'w'
|
||||
|
||||
dbid_path = os.path.join(filename, DBBACKEND)
|
||||
if os.path.isfile(dbid_path):
|
||||
with open(dbid_path) as fp:
|
||||
dbid = fp.read().strip()
|
||||
else:
|
||||
dbid = "bsddb"
|
||||
|
||||
db = make_database(dbid)
|
||||
db.disable_signals()
|
||||
self.dbstate.no_database()
|
||||
|
||||
self.uistate.progress.show()
|
||||
self.uistate.pulse_progressbar(0)
|
||||
if db.requires_login() and username is None:
|
||||
login = GrampsLoginDialog(self.uistate)
|
||||
credentials = login.run()
|
||||
if credentials is None:
|
||||
return
|
||||
username, password = credentials
|
||||
|
||||
self._begin_progress()
|
||||
|
||||
force_schema_upgrade = False
|
||||
force_bsddb_upgrade = False
|
||||
force_bsddb_downgrade = False
|
||||
force_python_upgrade = False
|
||||
try:
|
||||
while True:
|
||||
dbid_path = os.path.join(filename, DBBACKEND)
|
||||
if os.path.isfile(dbid_path):
|
||||
with open(dbid_path) as fp:
|
||||
dbid = fp.read().strip()
|
||||
else:
|
||||
dbid = "bsddb"
|
||||
|
||||
db = make_database(dbid)
|
||||
db.disable_signals()
|
||||
if db.requires_login() and username is None:
|
||||
login = GrampsLoginDialog(self.uistate)
|
||||
credentials = login.run()
|
||||
if credentials is None:
|
||||
return
|
||||
username, password = credentials
|
||||
|
||||
try:
|
||||
db.load(filename, self.uistate.pulse_progressbar,
|
||||
db.load(filename, self._pulse_progress,
|
||||
mode, force_schema_upgrade,
|
||||
force_bsddb_upgrade,
|
||||
force_bsddb_downgrade,
|
||||
force_python_upgrade,
|
||||
username=username,
|
||||
password=password)
|
||||
if self.dbstate.is_open():
|
||||
self.dbstate.db.close(
|
||||
user=User(callback=self.uistate.pulse_progressbar,
|
||||
user=User(callback=self._pulse_progress,
|
||||
uistate=self.uistate,
|
||||
dbstate=self.dbstate))
|
||||
self.dbstate.change_database(db)
|
||||
break
|
||||
except (DbSupportedError, DbUpgradeRequiredError) as msg:
|
||||
if(force_schema_upgrade or
|
||||
QuestionDialog2(_("Are you sure you want "
|
||||
except DbUpgradeRequiredError as msg:
|
||||
if QuestionDialog2(_("Are you sure you want "
|
||||
"to upgrade this Family Tree?"),
|
||||
str(msg),
|
||||
_("I have made a backup,\n"
|
||||
"please upgrade my Family Tree"),
|
||||
_("Cancel"),
|
||||
parent=self.uistate.window).run()):
|
||||
parent=self.uistate.window).run():
|
||||
force_schema_upgrade = True
|
||||
make_zip_backup(filename)
|
||||
force_bsddb_upgrade = False
|
||||
force_bsddb_downgrade = False
|
||||
force_python_upgrade = False
|
||||
else:
|
||||
self.dbstate.no_database()
|
||||
break
|
||||
except BsddbUpgradeRequiredError as msg:
|
||||
if QuestionDialog2(_("Are you sure you want "
|
||||
"to upgrade this Family Tree?"),
|
||||
str(msg),
|
||||
_("I have made a backup,\n"
|
||||
"please upgrade my Family Tree"),
|
||||
_("Cancel"),
|
||||
parent=self.uistate.window).run():
|
||||
force_schema_upgrade = False
|
||||
force_bsddb_upgrade = True
|
||||
force_bsddb_downgrade = False
|
||||
force_python_upgrade = False
|
||||
else:
|
||||
self.dbstate.no_database()
|
||||
break
|
||||
except BsddbDowngradeRequiredError as msg:
|
||||
if QuestionDialog2(_("Are you sure you want "
|
||||
"to downgrade this Family Tree?"),
|
||||
str(msg),
|
||||
_("I have made a backup,\n"
|
||||
"please downgrade my Family Tree"),
|
||||
_("Cancel"),
|
||||
parent=self.uistate.window).run():
|
||||
force_schema_upgrade = False
|
||||
force_bsddb_upgrade = False
|
||||
force_bsddb_downgrade = True
|
||||
force_python_upgrade = False
|
||||
else:
|
||||
self.dbstate.no_database()
|
||||
break
|
||||
except PythonUpgradeRequiredError as msg:
|
||||
if QuestionDialog2(_("Are you sure you want "
|
||||
"to upgrade this Family Tree?"),
|
||||
str(msg),
|
||||
_("I have made a backup,\n"
|
||||
"please upgrade my Family Tree"),
|
||||
_("Cancel"),
|
||||
parent=self.uistate.window).run():
|
||||
force_schema_upgrade = False
|
||||
force_bsddb_upgrade = False
|
||||
force_bsddb_downgrade = False
|
||||
force_python_upgrade = True
|
||||
else:
|
||||
self.dbstate.no_database()
|
||||
break
|
||||
# Get here is there is an exception the while loop does not handle
|
||||
except BsddbDowngradeError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._warn( _("Cannot open database"), str(msg))
|
||||
except DbVersionError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog( _("Cannot open database"), str(msg))
|
||||
except DbPythonError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog( _("Cannot open database"), str(msg))
|
||||
except DbEnvironmentError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._errordialog( _("Cannot open database"), str(msg))
|
||||
except PythonDowngradeError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._warn( _("Cannot open database"), str(msg))
|
||||
except DbConnectionError as msg:
|
||||
self.dbstate.no_database()
|
||||
self._warn(_("Cannot open database"), str(msg))
|
||||
@@ -236,8 +300,7 @@ class DbLoader(CLIDbLoader):
|
||||
except Exception as newerror:
|
||||
self.dbstate.no_database()
|
||||
self._dberrordialog(str(newerror))
|
||||
|
||||
self.uistate.progress.hide()
|
||||
self._end_progress()
|
||||
return True
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -324,7 +387,7 @@ class GrampsLoginDialog(ManagedWindow):
|
||||
self.title = _("Login")
|
||||
ManagedWindow.__init__(self, uistate, [], self.__class__, modal=True)
|
||||
|
||||
dialog = Gtk.Dialog(transient_for=uistate.window)
|
||||
dialog = Gtk.Dialog(parent=uistate.window)
|
||||
grid = Gtk.Grid()
|
||||
grid.set_border_width(6)
|
||||
grid.set_row_spacing(6)
|
||||
@@ -469,7 +532,7 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
return True
|
||||
else:
|
||||
try:
|
||||
f = open(filename,'w')
|
||||
f = open(filename, 'w')
|
||||
f.close()
|
||||
os.remove(filename)
|
||||
except IOError:
|
||||
@@ -485,7 +548,6 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
self.import_info = None
|
||||
self._begin_progress()
|
||||
self.uistate.set_sensitive(False)
|
||||
self.uistate.viewmanager.enable_menu(False)
|
||||
|
||||
try:
|
||||
#an importer can return an object with info, object.info_text()
|
||||
@@ -506,7 +568,6 @@ class GrampsImportFileDialog(ManagedWindow):
|
||||
except Exception:
|
||||
_LOG.error("Failed to import database.", exc_info=True)
|
||||
self.uistate.set_sensitive(True)
|
||||
self.uistate.viewmanager.enable_menu(True)
|
||||
self._end_progress()
|
||||
|
||||
def build_menu_names(self, obj): # this is meaningless since it's modal
|
||||
|
||||
@@ -367,7 +367,7 @@ class DbManager(CLIDbManager, ManagedWindow):
|
||||
dbid = config.get('database.backend')
|
||||
backend_type = self.get_backend_name_from_dbid(dbid)
|
||||
if backend_type == UNAVAILABLE:
|
||||
dbid = 'sqlite'
|
||||
dbid = 'bsddb'
|
||||
config.set('database.backend', dbid)
|
||||
backend_type = self.get_backend_name_from_dbid(dbid)
|
||||
self.new_btn.set_tooltip_text(backend_type)
|
||||
@@ -938,7 +938,7 @@ class DbManager(CLIDbManager, ManagedWindow):
|
||||
fname = os.path.join(dirname, filename)
|
||||
os.unlink(fname)
|
||||
|
||||
dbase = make_database("sqlite")
|
||||
dbase = make_database("bsddb")
|
||||
dbase.load(dirname, None)
|
||||
|
||||
self.__start_cursor(_("Rebuilding database from backup files"))
|
||||
@@ -1013,7 +1013,7 @@ class DbManager(CLIDbManager, ManagedWindow):
|
||||
"""
|
||||
Handle the reception of drag data
|
||||
"""
|
||||
drag_value = selection.get_data().decode()
|
||||
drag_value = selection.get_data().decode().strip(' \r\n\x00')
|
||||
fname = None
|
||||
type = None
|
||||
title = None
|
||||
|
||||
@@ -440,7 +440,7 @@ class MissingMediaDialog:
|
||||
class MultiSelectDialog:
|
||||
def __init__(self, msg1_func, msg2_func, items, lookup,
|
||||
cancel_func=None, no_func=None, yes_func=None,
|
||||
multi_yes_func=None, parent=None):
|
||||
parent=None):
|
||||
"""
|
||||
"""
|
||||
self.xml = Glade(toplevel='multiselectdialog')
|
||||
@@ -489,10 +489,6 @@ class MultiSelectDialog:
|
||||
response = self.top.run()
|
||||
|
||||
if check_button.get_active():
|
||||
# run the multiple yes if 'do remainder' is checked
|
||||
if multi_yes_func and response == 3:
|
||||
multi_yes_func(items)
|
||||
break
|
||||
default_action = response
|
||||
else:
|
||||
response = default_action
|
||||
|
||||
@@ -64,12 +64,9 @@ from .managedwindow import GrampsWindowManager
|
||||
from gramps.gen.relationship import get_relationship_calculator
|
||||
from .glade import Glade
|
||||
from gramps.gen.utils.db import navigation_label
|
||||
from gramps.gen.errors import HandleError
|
||||
from .widgets.progressdialog import ProgressMonitor, GtkProgressDialog
|
||||
from .dialog import ErrorDialog, WarningDialog
|
||||
from .dialog import ErrorDialog
|
||||
from .uimanager import ActionGroup
|
||||
from ..version import VERSION_QUALIFIER, DEV_VERSION
|
||||
from gramps.gen.const import VERSION
|
||||
|
||||
DISABLED = -1
|
||||
|
||||
@@ -423,7 +420,6 @@ class DisplayState(Callback):
|
||||
self.status = status
|
||||
self.status_id = status.get_context_id('GRAMPS')
|
||||
self.progress = status.get_progress_bar()
|
||||
self.status_ver = status.get_version_btn()
|
||||
self.history_lookup = {}
|
||||
self.gwm = GrampsWindowManager(uimanager)
|
||||
self.widget = None
|
||||
@@ -447,16 +443,6 @@ class DisplayState(Callback):
|
||||
# but this connection is still made!
|
||||
# self.dbstate.connect('database-changed', self.db_changed)
|
||||
|
||||
if DEV_VERSION or VERSION_QUALIFIER:
|
||||
ver_btn = status.get_version_btn()
|
||||
ver_btn.set_label(VERSION)
|
||||
if DEV_VERSION:
|
||||
msg = 'master'
|
||||
else:
|
||||
msg = VERSION_QUALIFIER[1:]
|
||||
ver_btn.connect('clicked', self.__develop_warn, msg)
|
||||
ver_btn.show()
|
||||
|
||||
def set_backup_timer(self):
|
||||
"""
|
||||
Set the backup timer.
|
||||
@@ -471,10 +457,6 @@ class DisplayState(Callback):
|
||||
minutes = 30
|
||||
elif interval == 3:
|
||||
minutes = 60
|
||||
elif interval == 4:
|
||||
minutes = 720
|
||||
elif interval == 5:
|
||||
minutes = 1440
|
||||
if interval > 0:
|
||||
self.backup_timer = GLib.timeout_add_seconds(
|
||||
minutes*60, self.__emit_autobackup)
|
||||
@@ -538,7 +520,10 @@ class DisplayState(Callback):
|
||||
history.push(handle)
|
||||
|
||||
def set_sensitive(self, state):
|
||||
self.window.set_sensitive(state)
|
||||
tbar = self.uimanager.get_widget('ToolBar')
|
||||
tbar.set_sensitive(state)
|
||||
self.viewmanager.hpane.set_sensitive(state)
|
||||
self.uimanager.enable_all_actions(state)
|
||||
|
||||
def db_changed(self, db):
|
||||
db.connect('long-op-start', self.progress_monitor.add_op)
|
||||
@@ -641,44 +626,32 @@ class DisplayState(Callback):
|
||||
self.status.clear_filter()
|
||||
|
||||
def modify_statusbar(self, dbstate, active=None):
|
||||
""" Update the status bar with current object info.
|
||||
|
||||
Since this is called via GLib.timeout_add it can happen at any time
|
||||
Gtk is idle or processing pending events. Even in the midst of a
|
||||
multiple delete, before the GUI has been updated for missing objects.
|
||||
So it is susceptible to HandleErrors for missing data, thus the 'try'.
|
||||
"""
|
||||
try:
|
||||
view = self.viewmanager.active_page
|
||||
if not isinstance(view, NavigationView) or dbstate is None:
|
||||
return
|
||||
|
||||
nav_type = view.navigation_type()
|
||||
active_handle = self.get_active(nav_type, view.navigation_group())
|
||||
|
||||
self.status.pop(self.status_id)
|
||||
|
||||
if active_handle and dbstate.is_open():
|
||||
name, _obj = navigation_label(dbstate.db, nav_type,
|
||||
active_handle)
|
||||
# Append relationship to default person if enabled.
|
||||
if(nav_type == 'Person' and
|
||||
config.get('interface.statusbar') > 1):
|
||||
if active_handle != dbstate.db.get_default_handle():
|
||||
msg = self.display_relationship(dbstate, active_handle)
|
||||
if msg:
|
||||
name = '%s (%s)' % (name, msg.strip())
|
||||
else:
|
||||
name = _('No active object')
|
||||
|
||||
if not name:
|
||||
name = self.NAV2MES[nav_type]
|
||||
|
||||
self.status.push(self.status_id, name)
|
||||
process_pending_events()
|
||||
except HandleError:
|
||||
view = self.viewmanager.active_page
|
||||
if not isinstance(view, NavigationView) or dbstate is None:
|
||||
return
|
||||
|
||||
nav_type = view.navigation_type()
|
||||
active_handle = self.get_active(nav_type, view.navigation_group())
|
||||
|
||||
self.status.pop(self.status_id)
|
||||
|
||||
if active_handle and dbstate.is_open():
|
||||
name, obj = navigation_label(dbstate.db, nav_type, active_handle)
|
||||
# Append relationship to default person if funtionality is enabled.
|
||||
if nav_type == 'Person' and config.get('interface.statusbar') > 1:
|
||||
if active_handle != dbstate.db.get_default_handle():
|
||||
msg = self.display_relationship(dbstate, active_handle)
|
||||
if msg:
|
||||
name = '%s (%s)' % (name, msg.strip())
|
||||
else:
|
||||
name = _('No active object')
|
||||
|
||||
if not name:
|
||||
name = self.NAV2MES[nav_type]
|
||||
|
||||
self.status.push(self.status_id, name)
|
||||
process_pending_events()
|
||||
|
||||
def pulse_progressbar(self, value, text=None):
|
||||
self.progress.set_fraction(min(value/100.0, 1.0))
|
||||
if text:
|
||||
@@ -695,34 +668,3 @@ class DisplayState(Callback):
|
||||
def reload_symbols(self):
|
||||
self.symbols = config.get('utf8.in-use')
|
||||
self.death_symbol = config.get('utf8.death-symbol')
|
||||
|
||||
def __develop_warn(self, button, warning_type):
|
||||
"""
|
||||
Display a development warning message to the user, with the
|
||||
warning_type in it.
|
||||
|
||||
:param warning_type: the general name of the warning, e.g. "master"
|
||||
:type warning_type: str
|
||||
"""
|
||||
WarningDialog(
|
||||
_('Danger: This is unstable code!'),
|
||||
_("This Gramps ('%s') is a development release.\n"
|
||||
) % warning_type +
|
||||
_("This version is not meant for normal usage. Use "
|
||||
"at your own risk.\n"
|
||||
"\n"
|
||||
"This version may:\n"
|
||||
"1) Work differently than you expect.\n"
|
||||
"2) Fail to run at all.\n"
|
||||
"3) Crash often.\n"
|
||||
"4) Corrupt your data.\n"
|
||||
"5) Save data in a format that is incompatible with the "
|
||||
"official release.\n"
|
||||
"\n"
|
||||
"%(bold_start)sBACKUP%(bold_end)s "
|
||||
"your existing databases before opening "
|
||||
"them with this version, and make sure to export your "
|
||||
"data to XML every now and then."
|
||||
) % {'bold_start' : '<b>',
|
||||
'bold_end' : '</b>'},
|
||||
parent=self.window)
|
||||
|
||||
@@ -51,7 +51,6 @@ from gramps.gen.datehandler import get_date, get_date_valid
|
||||
from gramps.gen.config import config
|
||||
from gramps.gen.utils.db import get_participant_from_event
|
||||
from gramps.gen.display.place import displayer as place_displayer
|
||||
from gramps.gen.proxy.cache import CacheProxyDb
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -102,7 +101,7 @@ class EventRefModel(Gtk.TreeStore):
|
||||
self.start_date = kwargs.get("start_date", None)
|
||||
typeobjs = (x[1] for x in self.COLS)
|
||||
Gtk.TreeStore.__init__(self, *typeobjs)
|
||||
self.db = CacheProxyDb(db)
|
||||
self.db = db
|
||||
self.groups = groups
|
||||
for index, group in enumerate(event_list):
|
||||
parentiter = self.append(None, row=self.row_group(index, group))
|
||||
|
||||
@@ -341,9 +341,9 @@ class EditCitation(EditPrimary):
|
||||
self.obj.set_gramps_id(self.db.find_next_citation_gramps_id())
|
||||
self.db.commit_citation(self.obj, trans)
|
||||
|
||||
self._do_close()
|
||||
if self.callback:
|
||||
self.callback(self.obj.get_handle())
|
||||
self._do_close()
|
||||
|
||||
def data_has_changed(self):
|
||||
"""
|
||||
|
||||
@@ -74,7 +74,7 @@ class EditEvent(EditPrimary):
|
||||
|
||||
EditPrimary.__init__(self, dbstate, uistate, track,
|
||||
event, dbstate.db.get_event_from_handle,
|
||||
dbstate.db.get_event_from_gramps_id, callback)
|
||||
dbstate.db.get_event_from_gramps_id)
|
||||
|
||||
self._init_event()
|
||||
|
||||
@@ -278,9 +278,9 @@ class EditEvent(EditPrimary):
|
||||
self.obj.set_gramps_id(self.db.find_next_event_gramps_id())
|
||||
self.db.commit_event(self.obj, trans)
|
||||
|
||||
self._do_close()
|
||||
if self.callback:
|
||||
self.callback(self.obj)
|
||||
self._do_close()
|
||||
|
||||
def data_has_changed(self):
|
||||
"""
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
# Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from copy import deepcopy
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
@@ -66,7 +66,6 @@ class EditEventRef(EditReference):
|
||||
def __init__(self, state, uistate, track, event, event_ref, update):
|
||||
EditReference.__init__(self, state, uistate, track, event, event_ref,
|
||||
update)
|
||||
self.original = deepcopy(event.serialize())
|
||||
self._init_event()
|
||||
|
||||
def _local_init(self):
|
||||
@@ -270,10 +269,8 @@ class EditEventRef(EditReference):
|
||||
def ok_clicked(self, obj):
|
||||
|
||||
if self.source.handle:
|
||||
# only commit if it has changed
|
||||
if self.source.serialize() != self.original:
|
||||
with DbTxn(_("Modify Event"), self.db) as trans:
|
||||
self.commit_event(self.source, trans)
|
||||
with DbTxn(_("Modify Event"), self.db) as trans:
|
||||
self.commit_event(self.source,trans)
|
||||
else:
|
||||
if self.check_for_duplicate_id('Event'):
|
||||
return
|
||||
|
||||
@@ -39,6 +39,9 @@ from ..glade import Glade
|
||||
from gramps.gen.simple import SimpleAccess
|
||||
from gramps.gen.const import URL_MANUAL_SECT2
|
||||
|
||||
import logging
|
||||
_LOG = logging.getLogger("editlink")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Constants
|
||||
@@ -154,6 +157,12 @@ class EditLink(ManagedWindow):
|
||||
|
||||
def _on_new_callback(self, obj):
|
||||
object_class = obj.__class__.__name__
|
||||
# workaround for bug12260
|
||||
try:
|
||||
test = obj.handle
|
||||
except AttributeError:
|
||||
_LOG.warn(str(object_class))
|
||||
return
|
||||
self.selected.set_text(self.display_link(
|
||||
object_class, "handle", obj.handle))
|
||||
self.url_link.set_text("gramps://%s/%s/%s" %
|
||||
@@ -208,28 +217,17 @@ class EditLink(ManagedWindow):
|
||||
(object_class, prop, value))
|
||||
|
||||
def _on_type_changed(self, widget):
|
||||
self.selected.set_text("")
|
||||
if self.uri_list.get_active() == WEB:
|
||||
self.url_link.set_sensitive(True)
|
||||
self.pick_item.set_sensitive(False)
|
||||
self.new_button.set_sensitive(False)
|
||||
self.edit_button.set_sensitive(False)
|
||||
self.selected.set_text("")
|
||||
self.url_link.set_text("https://")
|
||||
else:
|
||||
self.url_link.set_sensitive(False)
|
||||
self.pick_item.set_sensitive(True)
|
||||
self.new_button.set_sensitive(True)
|
||||
self.edit_button.set_sensitive(True)
|
||||
object_class = OBJECT_MAP[self.uri_list.get_active()]
|
||||
handle = self.uistate.get_active(object_class)
|
||||
if handle:
|
||||
self.selected.set_text(self.display_link(
|
||||
object_class, "handle", handle))
|
||||
self.url_link.set_text("gramps://%s/handle/%s" %
|
||||
(object_class, handle))
|
||||
else:
|
||||
self.selected.set_text("")
|
||||
self.url_link.set_text("")
|
||||
|
||||
def get_uri(self):
|
||||
if self.uri_list.get_active() == WEB:
|
||||
|
||||
@@ -334,9 +334,9 @@ class EditMedia(EditPrimary):
|
||||
self.obj.set_gramps_id(self.db.find_next_media_gramps_id())
|
||||
self.db.commit_media(self.obj, trans)
|
||||
|
||||
self._do_close()
|
||||
if self.callback:
|
||||
self.callback(self.obj)
|
||||
self._do_close()
|
||||
|
||||
def data_has_changed(self):
|
||||
"""
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
from copy import deepcopy
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -84,9 +83,7 @@ class EditMediaRef(EditReference):
|
||||
if not self.source.get_handle():
|
||||
#show the addmedia dialog immediately, with track of parent.
|
||||
AddMedia(state, self.uistate, self.track, self.source,
|
||||
self._update_addmedia)
|
||||
else:
|
||||
self.original = deepcopy(self.source.serialize())
|
||||
self._update_addmedia)
|
||||
|
||||
def _local_init(self):
|
||||
|
||||
@@ -521,11 +518,9 @@ class EditMediaRef(EditReference):
|
||||
|
||||
#first save primary object
|
||||
if self.source.handle:
|
||||
# only commit if it has changed
|
||||
if self.source.serialize() != self.original:
|
||||
with DbTxn(_("Edit Media Object (%s)") %
|
||||
self.source.get_description(), self.db) as trans:
|
||||
self.db.commit_media(self.source, trans)
|
||||
with DbTxn(_("Edit Media Object (%s)") %
|
||||
self.source.get_description(), self.db) as trans:
|
||||
self.db.commit_media(self.source, trans)
|
||||
else:
|
||||
if self.check_for_duplicate_id('Media'):
|
||||
return
|
||||
|
||||
@@ -346,9 +346,9 @@ class EditNote(EditPrimary):
|
||||
self.obj.set_gramps_id(self.db.find_next_note_gramps_id())
|
||||
self.db.commit_note(self.obj, trans)
|
||||
|
||||
self._do_close()
|
||||
if self.callback:
|
||||
self.callback(self.obj.get_handle())
|
||||
self._do_close()
|
||||
|
||||
class DeleteNoteQuery:
|
||||
def __init__(self, dbstate, uistate, note, the_lists):
|
||||
|
||||
@@ -42,7 +42,6 @@ import pickle
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import Gdk
|
||||
from gi.repository import Pango
|
||||
from gi.repository.GLib import markup_escape_text
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -436,6 +435,7 @@ class EditPerson(EditPrimary):
|
||||
obj.connect('changed', self._changed_name)
|
||||
|
||||
self.preview_name = self.top.get_object("full_name")
|
||||
self.preview_name.override_font(Pango.FontDescription('sans bold 12'))
|
||||
self.surntab = SurnameTab(self.dbstate, self.uistate, self.track,
|
||||
self.obj.get_primary_name(),
|
||||
on_change=self._changed_name)
|
||||
@@ -550,9 +550,7 @@ class EditPerson(EditPrimary):
|
||||
Update the window title, and default name in name tab
|
||||
"""
|
||||
self.update_title(self.get_menu_title())
|
||||
self.preview_name.set_markup(
|
||||
"<span size='x-large' weight='bold'>%s</span>" %
|
||||
markup_escape_text(self.get_preview_name(), -1))
|
||||
self.preview_name.set_text(self.get_preview_name())
|
||||
self.name_list.update_defname()
|
||||
|
||||
def name_callback(self):
|
||||
@@ -640,6 +638,7 @@ class EditPerson(EditPrimary):
|
||||
"""
|
||||
self.imgmenu = Gtk.Menu()
|
||||
menu = self.imgmenu
|
||||
menu.set_title(_("Media Object"))
|
||||
obj = self.db.get_media_from_handle(photo.get_reference_handle())
|
||||
if obj:
|
||||
add_menuitem(menu, _("View"), photo,
|
||||
@@ -1087,9 +1086,9 @@ class EditPerson(EditPrimary):
|
||||
class GenderDialog(Gtk.MessageDialog):
|
||||
def __init__(self, parent=None):
|
||||
Gtk.MessageDialog.__init__(self,
|
||||
transient_for=parent,
|
||||
modal=True,
|
||||
message_type=Gtk.MessageType.QUESTION,
|
||||
parent,
|
||||
flags=Gtk.DialogFlags.MODAL,
|
||||
type=Gtk.MessageType.QUESTION,
|
||||
)
|
||||
self.set_icon(ICON)
|
||||
self.set_title('')
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
from copy import deepcopy
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
@@ -51,7 +51,6 @@ class EditPlaceRef(EditReference):
|
||||
def __init__(self, state, uistate, track, place, place_ref, update):
|
||||
EditReference.__init__(self, state, uistate, track, place, place_ref,
|
||||
update)
|
||||
self.original = deepcopy(place.serialize())
|
||||
|
||||
def _local_init(self):
|
||||
|
||||
@@ -315,10 +314,8 @@ class EditPlaceRef(EditReference):
|
||||
return
|
||||
|
||||
if self.source.handle:
|
||||
# only commit if it has changed
|
||||
if self.source.serialize() != self.original:
|
||||
with DbTxn(_("Modify Place"), self.db) as trans:
|
||||
self.db.commit_place(self.source, trans)
|
||||
with DbTxn(_("Modify Place"), self.db) as trans:
|
||||
self.db.commit_place(self.source, trans)
|
||||
else:
|
||||
if self.check_for_duplicate_id('Place'):
|
||||
return
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
# Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from copy import deepcopy
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
@@ -51,7 +51,6 @@ class EditRepoRef(EditReference):
|
||||
|
||||
EditReference.__init__(self, state, uistate, track, source,
|
||||
source_ref, update)
|
||||
self.original = deepcopy(source.serialize())
|
||||
|
||||
def _local_init(self):
|
||||
|
||||
@@ -190,10 +189,8 @@ class EditRepoRef(EditReference):
|
||||
def ok_clicked(self, obj):
|
||||
|
||||
if self.source.handle:
|
||||
# only commit if it has changed
|
||||
if self.source.serialize() != self.original:
|
||||
with DbTxn(_("Modify Repository"), self.db) as trans:
|
||||
self.db.commit_repository(self.source, trans)
|
||||
with DbTxn(_("Modify Repository"), self.db) as trans:
|
||||
self.db.commit_repository(self.source,trans)
|
||||
else:
|
||||
if self.check_for_duplicate_id('Repository'):
|
||||
return
|
||||
|
||||
@@ -65,7 +65,7 @@ class EditRepository(EditPrimary):
|
||||
|
||||
EditPrimary.__init__(self, dbstate, uistate, track, repository,
|
||||
dbstate.db.get_repository_from_handle,
|
||||
dbstate.db.get_repository_from_gramps_id, callback)
|
||||
dbstate.db.get_repository_from_gramps_id)
|
||||
|
||||
def empty_object(self):
|
||||
return Repository()
|
||||
@@ -208,8 +208,6 @@ class EditRepository(EditPrimary):
|
||||
self.db.commit_repository(self.obj, trans)
|
||||
|
||||
self._do_close()
|
||||
if self.callback:
|
||||
self.callback(self.obj)
|
||||
|
||||
class DeleteRepositoryQuery:
|
||||
def __init__(self, dbstate, uistate, repository, sources):
|
||||
|
||||
@@ -101,7 +101,7 @@ class EditTagList(ManagedWindow):
|
||||
Create a dialog box to select tags.
|
||||
"""
|
||||
# pylint: disable-msg=E1101
|
||||
top = Gtk.Dialog(transient_for=self.uistate.window)
|
||||
top = Gtk.Dialog(parent=self.uistate.window)
|
||||
top.vbox.set_spacing(5)
|
||||
|
||||
columns = [('', -1, 300),
|
||||
|
||||
@@ -530,8 +530,6 @@ class EditRule(ManagedWindow):
|
||||
# filters of another namespace, name may be same as caller!
|
||||
elif v == _('Person filter name:'):
|
||||
t = MyFilters(self.filterdb.get_filters('Person'))
|
||||
elif v == _('Family filter name:'):
|
||||
t = MyFilters(self.filterdb.get_filters('Family'))
|
||||
elif v == _('Event filter name:'):
|
||||
t = MyFilters(self.filterdb.get_filters('Event'))
|
||||
elif v == _('Source filter name:'):
|
||||
|
||||
@@ -37,7 +37,6 @@ from gramps.gen.lib import (Person, Family, Event, Source, Place, Citation,
|
||||
from gramps.cli.user import User
|
||||
from gramps.gen.dbstate import DbState
|
||||
from gramps.gen.db.utils import make_database
|
||||
from gramps.gen.db import DbTxn
|
||||
from gramps.gui.editors.editreference import EditReference
|
||||
|
||||
class MockWindow:
|
||||
@@ -57,7 +56,7 @@ class TestEditReference(unittest.TestCase):
|
||||
@unittest.skipUnless(MOCKING, "Requires unittest.mock to run")
|
||||
def test_editreference(self):
|
||||
dbstate = DbState()
|
||||
db = make_database("sqlite")
|
||||
db = make_database("bsddb")
|
||||
path = "/tmp/edit_ref_test"
|
||||
try:
|
||||
os.mkdir(path)
|
||||
@@ -67,8 +66,7 @@ class TestEditReference(unittest.TestCase):
|
||||
dbstate.change_database(db)
|
||||
source = Place()
|
||||
source.gramps_id = "P0001"
|
||||
with DbTxn("test place", dbstate.db) as trans:
|
||||
dbstate.db.add_place(source, trans)
|
||||
dbstate.db.place_map[source.handle] = source.serialize()
|
||||
editor = MockEditReference(dbstate, uistate=None, track=[],
|
||||
source=source, source_ref=None, update=None)
|
||||
with patch('gramps.gui.editors.editreference.ErrorDialog') as MockED:
|
||||
|
||||
@@ -58,13 +58,7 @@ class SidebarFilter(DbGUIElement):
|
||||
self.grid.set_row_spacing(6)
|
||||
self.grid.set_column_spacing(6)
|
||||
self.apply_btn = Gtk.Button.new_with_mnemonic(_('_Find'))
|
||||
self.apply_btn.set_tooltip_text(_(
|
||||
"This updates the view with the current filter parameters."))
|
||||
self.clear_btn = Gtk.Button()
|
||||
self.clear_btn.set_tooltip_text(_(
|
||||
"This resets the filter parameters to empty state. The 'Find' "
|
||||
"button should be used to actually update the view to its "
|
||||
"defaults."))
|
||||
|
||||
self._init_interface()
|
||||
uistate.connect('filters-changed', self.on_filters_changed)
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.18.3 -->
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.10"/>
|
||||
<requires lib="grampswidgets" version="0.0"/>
|
||||
<object class="GtkDialog" id="editplace">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<child type="titlebar">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox" id="dialog-vbox19">
|
||||
<property name="visible">True</property>
|
||||
@@ -101,7 +103,7 @@
|
||||
<child>
|
||||
<object class="GtkLabel" id="comment1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes">Either use the two fields below to enter coordinates (latitude and longitude),</property>
|
||||
<property name="hexpand">True</property>
|
||||
|
||||
@@ -485,6 +485,50 @@ except ImportError:
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
def _display_welcome_message(parent=None):
|
||||
"""
|
||||
Display a welcome message to the user.
|
||||
(This docstring seems very legacy/historical, not accurate.)
|
||||
"""
|
||||
_display_generic_message("master", 'behavior.betawarn', parent=parent)
|
||||
|
||||
def _display_generic_message(warning_type, config_key, parent=None):
|
||||
"""
|
||||
Display a generic warning message to the user, with the
|
||||
warning_type in it -- if the config_key key is not set
|
||||
|
||||
:param warning_type: the general name of the warning, e.g. "master"
|
||||
:type warning_type: str
|
||||
:param config_key: name of gramps.ini config key, e.g. "behavior.betawarn"
|
||||
:type config_key: str
|
||||
"""
|
||||
if not config.get(config_key):
|
||||
from .dialog import WarningDialog
|
||||
WarningDialog(
|
||||
_('Danger: This is unstable code!'),
|
||||
_("This Gramps ('%s') is a development release.\n"
|
||||
) % warning_type +
|
||||
_("This version is not meant for normal usage. Use "
|
||||
"at your own risk.\n"
|
||||
"\n"
|
||||
"This version may:\n"
|
||||
"1) Work differently than you expect.\n"
|
||||
"2) Fail to run at all.\n"
|
||||
"3) Crash often.\n"
|
||||
"4) Corrupt your data.\n"
|
||||
"5) Save data in a format that is incompatible with the "
|
||||
"official release.\n"
|
||||
"\n"
|
||||
"%(bold_start)sBACKUP%(bold_end)s "
|
||||
"your existing databases before opening "
|
||||
"them with this version, and make sure to export your "
|
||||
"data to XML every now and then."
|
||||
) % {'bold_start' : '<b>',
|
||||
'bold_end' : '</b>'},
|
||||
parent=parent)
|
||||
config.set('behavior.autoload', False)
|
||||
config.set(config_key, True)
|
||||
|
||||
def _display_gtk_gettext_message(parent=None):
|
||||
"""
|
||||
Display a GTK-translations-missing message to the user.
|
||||
@@ -574,6 +618,8 @@ class Gramps:
|
||||
and not gettext.find(GTK_GETTEXT_DOMAIN)):
|
||||
_display_gtk_gettext_message(parent=self._vm.window)
|
||||
|
||||
#_display_welcome_message(parent=self._vm.window)
|
||||
|
||||
_display_translator_message(parent=self._vm.window)
|
||||
|
||||
self._vm.init_interface()
|
||||
|
||||
@@ -284,8 +284,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"information included in the error please remove "
|
||||
"it."))
|
||||
label.set_halign(Gtk.Align.START)
|
||||
label.set_margin_top(4)
|
||||
label.set_margin_bottom(4)
|
||||
label.set_padding(0, 4)
|
||||
label.set_line_wrap(True)
|
||||
|
||||
swin = Gtk.ScrolledWindow()
|
||||
@@ -301,9 +300,9 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
sw_frame = Gtk.Frame()
|
||||
sw_frame.add(swin)
|
||||
|
||||
reset = Gtk.Button(label="Reset")
|
||||
reset = Gtk.Button("Reset")
|
||||
reset.connect('clicked', self._reset_error_details)
|
||||
clear = Gtk.Button(label="Clear")
|
||||
clear = Gtk.Button("Clear")
|
||||
clear.connect('clicked', self._clear_error_details)
|
||||
|
||||
button_box = Gtk.ButtonBox()
|
||||
@@ -365,8 +364,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"remove anything that you would rather not have "
|
||||
"included in the bug report."))
|
||||
label.set_halign(Gtk.Align.START)
|
||||
label.set_margin_top(4)
|
||||
label.set_margin_bottom(4)
|
||||
label.set_padding(0, 4)
|
||||
label.set_line_wrap(True)
|
||||
|
||||
swin = Gtk.ScrolledWindow()
|
||||
@@ -382,9 +380,9 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
sw_frame = Gtk.Frame()
|
||||
sw_frame.add(swin)
|
||||
|
||||
reset = Gtk.Button(label="Reset")
|
||||
reset = Gtk.Button("Reset")
|
||||
reset.connect('clicked', self._reset_sys_information)
|
||||
clear = Gtk.Button(label="Clear")
|
||||
clear = Gtk.Button("Clear")
|
||||
clear.connect('clicked', self._clear_sys_information)
|
||||
|
||||
|
||||
@@ -443,8 +441,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"can about what you were doing when the error "
|
||||
"occurred."))
|
||||
label.set_halign(Gtk.Align.START)
|
||||
label.set_margin_top(4)
|
||||
label.set_margin_bottom(4)
|
||||
label.set_padding(0, 4)
|
||||
label.set_line_wrap(True)
|
||||
|
||||
swin = Gtk.ScrolledWindow()
|
||||
@@ -459,7 +456,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
sw_frame = Gtk.Frame()
|
||||
sw_frame.add(swin)
|
||||
|
||||
clear = Gtk.Button(label="Clear")
|
||||
clear = Gtk.Button("Clear")
|
||||
clear.connect('clicked', self._clear_user_information)
|
||||
|
||||
button_box = Gtk.ButtonBox()
|
||||
@@ -517,8 +514,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"that it does not contain anything that you do not "
|
||||
"want to be sent to the developers."))
|
||||
label.set_halign(Gtk.Align.START)
|
||||
label.set_margin_top(4)
|
||||
label.set_margin_bottom(4)
|
||||
label.set_padding(0, 4)
|
||||
label.set_line_wrap(True)
|
||||
|
||||
swin = Gtk.ScrolledWindow()
|
||||
@@ -584,8 +580,7 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"clipboard and then open a webbrowser to file a bug report at "),
|
||||
URL_BUGTRACKER))
|
||||
label.set_halign(Gtk.Align.START)
|
||||
label.set_margin_top(4)
|
||||
label.set_margin_bottom(4)
|
||||
label.set_padding(0, 4)
|
||||
label.set_line_wrap(True)
|
||||
label.set_use_markup(True)
|
||||
|
||||
@@ -594,12 +589,11 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"and file a bug report on the Gramps bug "
|
||||
"tracking system."))
|
||||
url_label.set_halign(Gtk.Align.START)
|
||||
url_label.set_margin_top(4)
|
||||
url_label.set_margin_bottom(4)
|
||||
url_label.set_padding(0, 4)
|
||||
url_label.set_line_wrap(True)
|
||||
url_label.set_size_request(200, -1)
|
||||
|
||||
url_button = Gtk.Button(label="File bug report")
|
||||
url_button = Gtk.Button("File bug report")
|
||||
url_button.connect('clicked', self._start_gramps_bts_in_browser)
|
||||
url_button_vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
url_button_vbox.pack_start(url_button, True, False, 0)
|
||||
@@ -619,12 +613,11 @@ class ErrorReportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
"the button below, paste the report and click "
|
||||
"submit report"))
|
||||
clip_label.set_halign(Gtk.Align.START)
|
||||
clip_label.set_margin_top(4)
|
||||
clip_label.set_margin_bottom(4)
|
||||
clip_label.set_padding(0, 4)
|
||||
clip_label.set_line_wrap(True)
|
||||
clip_label.set_size_request(200, -1)
|
||||
|
||||
clip_button = Gtk.Button(label="Copy to clipboard")
|
||||
clip_button = Gtk.Button("Copy to clipboard")
|
||||
clip_button.connect('clicked', self._copy_to_clipboard)
|
||||
clip_button_vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
clip_button_vbox.pack_start(clip_button, True, False, 0)
|
||||
|
||||
@@ -105,7 +105,7 @@ class ErrorView(ManagedWindow):
|
||||
|
||||
def draw_window(self):
|
||||
title = "%s - Gramps" % _("Error Report")
|
||||
self.top = Gtk.Dialog(title=title)
|
||||
self.top = Gtk.Dialog(title)
|
||||
# look over the top level windows, it seems the oldest come first, so
|
||||
# the most recent still visible window appears to be a good choice for
|
||||
# a transient parent
|
||||
|
||||
@@ -75,17 +75,16 @@ class LastNameDialog(ManagedWindow):
|
||||
def __init__(self, database, uistate, track, surnames, skip_list=set()):
|
||||
|
||||
ManagedWindow.__init__(self, uistate, track, self, modal=True)
|
||||
self.__dlg = Gtk.Dialog(
|
||||
transient_for=uistate.window, destroy_with_parent=True,
|
||||
modal=True)
|
||||
self.__dlg.add_buttons(_('_Cancel'), Gtk.ResponseType.REJECT,
|
||||
_('_OK'), Gtk.ResponseType.ACCEPT)
|
||||
flags = Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT
|
||||
buttons = (_('_Cancel'), Gtk.ResponseType.REJECT,
|
||||
_('_OK'), Gtk.ResponseType.ACCEPT)
|
||||
self.__dlg = Gtk.Dialog(None, uistate.window, flags, buttons)
|
||||
self.set_window(self.__dlg, None, _('Select surname'))
|
||||
self.setup_configs('interface.lastnamedialog', 400, 400)
|
||||
|
||||
# build up a container to display all of the people of interest
|
||||
self.__model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_INT)
|
||||
self.__tree_view = Gtk.TreeView(model=self.__model)
|
||||
self.__tree_view = Gtk.TreeView(self.__model)
|
||||
col1 = Gtk.TreeViewColumn(_('Surname'), Gtk.CellRendererText(), text=0)
|
||||
col2 = Gtk.TreeViewColumn(_('Count'), Gtk.CellRendererText(), text=1)
|
||||
col1.set_resizable(True)
|
||||
@@ -1740,10 +1739,12 @@ class GuiDestinationOption(Gtk.Box):
|
||||
else:
|
||||
my_action = Gtk.FileChooserAction.SAVE
|
||||
|
||||
fcd = Gtk.FileChooserDialog(title=_("Save As"), action=my_action,
|
||||
transient_for=self.__uistate.window)
|
||||
fcd.add_buttons(_('_Cancel'), Gtk.ResponseType.CANCEL,
|
||||
_('_Open'), Gtk.ResponseType.OK)
|
||||
fcd = Gtk.FileChooserDialog(_("Save As"), action=my_action,
|
||||
parent=self.__uistate.window,
|
||||
buttons=(_('_Cancel'),
|
||||
Gtk.ResponseType.CANCEL,
|
||||
_('_Open'),
|
||||
Gtk.ResponseType.OK))
|
||||
|
||||
name = os.path.abspath(self.__option.get_value())
|
||||
if self.__option.get_directory_entry():
|
||||
|
||||
@@ -435,10 +435,12 @@ class PluginStatus(ManagedWindow):
|
||||
"""
|
||||
Select a file from the file system.
|
||||
"""
|
||||
fcd = Gtk.FileChooserDialog(title=_("Load Addon"),
|
||||
transient_for=self.__uistate.window)
|
||||
fcd.add_buttons(_('_Cancel'), Gtk.ResponseType.CANCEL,
|
||||
_('_Open'), Gtk.ResponseType.OK)
|
||||
fcd = Gtk.FileChooserDialog(_("Load Addon"),
|
||||
parent=self.__uistate.window,
|
||||
buttons=(_('_Cancel'),
|
||||
Gtk.ResponseType.CANCEL,
|
||||
_('_Open'),
|
||||
Gtk.ResponseType.OK))
|
||||
name = self.install_addon_path.get_text()
|
||||
dir = os.path.dirname(name)
|
||||
if not os.path.isdir(dir):
|
||||
@@ -686,10 +688,10 @@ class PluginTrace(ManagedWindow):
|
||||
) % {'str1': _("Plugin Error"), 'str2': name}
|
||||
ManagedWindow.__init__(self, uistate, track, self)
|
||||
|
||||
dlg = Gtk.Dialog(title="", transient_for=uistate.window,
|
||||
destroy_with_parent=True)
|
||||
dlg.add_button(_('_Close'), Gtk.ResponseType.CLOSE),
|
||||
self.set_window(dlg, None, title)
|
||||
self.set_window(Gtk.Dialog("", uistate.window,
|
||||
Gtk.DialogFlags.DESTROY_WITH_PARENT,
|
||||
(_('_Close'), Gtk.ResponseType.CLOSE)),
|
||||
None, title)
|
||||
self.setup_configs('interface.plugintrace', 600, 400)
|
||||
self.window.connect('response', self.close)
|
||||
|
||||
@@ -740,7 +742,7 @@ class ToolManagedWindowBase(ManagedWindow):
|
||||
self.format_menu = None
|
||||
self.style_button = None
|
||||
|
||||
window = Gtk.Dialog(title='Tool')
|
||||
window = Gtk.Dialog('Tool')
|
||||
self.set_window(window, None, self.get_title())
|
||||
|
||||
#self.window.connect('response', self.close)
|
||||
|
||||
@@ -286,7 +286,7 @@ class ExportAssistant(ManagedWindow, Gtk.Assistant):
|
||||
self.set_page_complete(vbox, True)
|
||||
|
||||
def create_page_fileselect(self):
|
||||
self.chooser = Gtk.FileChooserWidget(action=Gtk.FileChooserAction.SAVE)
|
||||
self.chooser = Gtk.FileChooserWidget(Gtk.FileChooserAction.SAVE)
|
||||
self.chooser.set_homogeneous(False) # Fix for bug #8350.
|
||||
#add border
|
||||
self.chooser.set_border_width(12)
|
||||
|
||||