Compare commits

..

50 Commits

Author SHA1 Message Date
Jérôme Rapinat a94f3100df png icons seem no more executable (debian rules) 2015-06-17 19:34:39 +02:00
Lajos Nemeséri 5d341a684e Update Hungarian translation 2015-06-17 18:41:16 +02:00
Doug Blank 26723c1b60 8537: Gedcom import crashes; kulath patch 2015-06-17 08:00:17 -04:00
Doug Blank de7430eeb8 8614: addresses pickleupgrade.txt issue, by kulath 2015-06-17 06:28:29 -04:00
Jérôme Rapinat 89ffc6b4cc minor update for DEBIAN stuff 2015-06-17 09:38:11 +02:00
Zdeněk Hataš a18120f17d czech translation update 2015-06-17 08:44:00 +02:00
Jérôme Rapinat 2846fc7dc5 Update french translation 2015-06-16 08:09:06 +02:00
Jérôme Rapinat e6c5232ae8 Update template 2015-06-16 08:00:55 +02:00
Doug Blank e7ab8b322b Merge pull request #35 from RossGammon/8047-resourcepath
8047 - Add new --resourcepath option to setup.py
2015-06-15 17:47:27 -04:00
Doug Blank fde34bb53b SimpleAccess: sort by surname; fixes crash in python3 2015-06-14 22:03:23 -04:00
Josip 60c0843861 translation: Croatian 2015-06-14 20:24:24 +02:00
Doug Blank 2ae2ca5c7d Merge pull request #34 from RossGammon/packagermode
Remove setup.py --enable-package-mode option text from INSTALL
2015-06-14 13:08:50 -04:00
Nick Hall 9747d1deea Validate place name language 2015-06-13 18:43:50 +01:00
Jérôme Rapinat e52d0a7a90 Merge NEWS (releases on 41 branch) 2015-06-12 16:47:17 +02:00
Hivernat Emmanuel eefd3e13e4 7347: fix a bug 'on mouse over' event 2015-06-12 16:35:50 +02:00
Jérôme Rapinat 918317434f Update french translation 2015-06-12 16:29:26 +02:00
Lajos Nemeséri 8dfc5381cd Update Hungarian translation 2015-06-12 16:25:39 +02:00
Josip 6511a80b47 8625: Cannot open Citation references from Clip Board 2015-06-12 16:15:40 +02:00
erikdrgm a5074e9478 Merge branch 'maintenance/gramps42' of github.com:gramps-project/gramps into gramps42 2015-06-10 10:22:31 +02:00
erikdrgm b90808525c Updated 150610 Dutch translation 2015-06-10 10:20:01 +02:00
Josip fedfabc87e setting dialogs parent 2015-06-10 02:22:21 +02:00
Jérôme Rapinat 891b9d2e34 update french translation 2015-06-09 16:53:20 +02:00
Jérôme Rapinat 3b0579afc3 Remove one remaining context argument 2015-06-08 19:30:22 +02:00
Zdeněk Hataš 5e763026a4 czech translation update 2015-06-07 22:08:54 +02:00
Jérôme Rapinat de706de317 update template 2015-06-07 20:08:26 +02:00
Jérôme Rapinat b884dc0e4c Remove context into glade file
Gramps (python) is not ready for supporting msgctxt for now
2015-06-07 20:07:22 +02:00
Jérôme Rapinat aaba2ec347 Remove some unicode stuff for python3 2015-06-07 19:47:29 +02:00
Jérôme Rapinat bdd44b57fd 7476: letter as custom paper size generated a ValueError 2015-06-07 19:17:29 +02:00
Zdeněk Hataš 8deb444a6c datehandler translation fix 2015-06-07 10:53:24 +02:00
Doug Blank ca3158a6ff 8621: Recursion Filter error 2015-06-06 19:57:40 -04:00
SNoiraud 53a9cfc83f Geography : bug 8612 and 8616 : gtk 3.16 introspection problem and change for new place structure. 2015-06-06 18:59:23 +02:00
Zdeněk Hataš 92fc8f8dcb czech translation update 2015-06-06 17:04:23 +02:00
Zdeněk Hataš 7a488c2fd4 czech translation fixes
inflection fixes
2015-06-06 10:48:06 +02:00
Zdeněk Hataš 98ff7693f3 czech translation update
POT update
2015-06-05 15:12:00 +02:00
Doug Blank 6b7258dfe0 Undo git_revision number change; premature 2015-06-05 08:07:56 -04:00
Zdeněk Hataš aceee07544 czech translation update 2015-06-05 12:51:40 +02:00
Josip 9e670d51bd Data Verify Tool: fix set transient parent
In init of ManagedWindow self.show() must be called
2015-06-05 12:07:59 +02:00
Josip 8e97b25f38 Relationship Calculator: fix set transient parent
In Glade file of any dialog which is Gramps ManagedWindow
property name "visible" must not be set to True
2015-06-05 12:07:58 +02:00
Doug Blank 6aeeafe74d Merge pull request #33 from sam-m888/master
country > county
2015-06-05 00:34:32 -04:00
Josip 4189799d45 8619: Relationship Calculator - can't select person to relate to 2015-06-04 22:56:58 +02:00
Doug Blank 5bfe514f45 Merge pull request #32 from gramps-project/sam-m888-patch-6
Hide unused code
2015-06-04 13:01:05 -04:00
Doug Blank aa35dbfb82 Merge pull request #31 from gramps-project/sam-m888-patch-5
Remove duplicate line in dictionary
2015-06-04 13:00:44 -04:00
Doug Blank 784ab0c3c7 Merge pull request #30 from gramps-project/sam-m888-patch-4
spelling correction to stop duplicate key
2015-06-04 13:00:33 -04:00
Doug Blank 5847bb0e17 Merge pull request #29 from gramps-project/sam-m888-patch-3
Spelling mistake inlae > inlaw
2015-06-04 13:00:22 -04:00
Doug Blank 08ac0b0996 Merge pull request #28 from gramps-project/sam-m888-patch-2
6366: Correct text on "Display tab"
2015-06-04 13:00:08 -04:00
Doug Blank c38ccf22ed Merge pull request #27 from gramps-project/sam-m888-patch-1
Fix outdated "Tags" help link
2015-06-04 12:59:42 -04:00
Matti Niemelä 1866b7ace1 update Finnish translation 2015-06-04 16:52:08 +02:00
erikdrgm 27b7676caa Updated 150603 Dutch translation 2015-06-03 21:48:54 +02:00
Jérôme Rapinat c273926941 Disable 'behavior.betawarn' on first start
No more master, new branch
2015-06-02 14:08:24 +02:00
Doug Blank ba8392923a Updated travis to test gramps42, and changed version to omit git number 2015-06-01 13:02:55 -04:00
1657 changed files with 782119 additions and 936758 deletions
-18
View File
@@ -1,18 +0,0 @@
# Make Github recognise Gramps as a Python project,
# by marking .sql files as text files!
# See: https://github.com/github/linguist/issues/2462
# https://github.com/github/linguist/blob/master/README.md
*.sql linguist-language=txt
# Have Github ignore js vendored files.
# https://github.com/gramps-project/gramps/tree/master/data/javascript
#data/javascript/*.js linguist-vendored
# don't mess with line endings for test files
*.vcs -text
*.ged -text
*.GED -text
*.csv -text
*.DEF -text
*.IXI -text
*.REM -text
+2 -11
View File
@@ -8,7 +8,7 @@ dist/
# Gramps
data/tips.xml
data/holidays.xml
gramps/plugins/lib/holidays.xml
po/.intltool-merge-cache
docs/_build/
@@ -18,13 +18,4 @@ tags
# Testing
test/data
# Windows image file caches
Thumbs.db
ehthumbs.db
# IDE
.idea/
# Glade temp files
*~
gramps/webapp/grampsdb/fixtures/initial_data.json
-28
View File
@@ -1,28 +0,0 @@
<benny.malengier@gramps-project.org> <benny.malengier@gmail.com>
<doug.blank@gmail.com> <dsblank@bitbucket.org>
<doug.blank@gmail.com> <dblank@cs.brynmawr.edu>
<beernarrd@gmail.com> <beernarrd@users.sourceforge.net>
<igal.shapira@gmail.com> <igalshapira@users.sourceforge.net>
<romjerome@yahoo.fr> <romjerome@users.noreply.github.com>
<jralls@ceridwen.us> <john@aeolus.local>
<josip@pisoj.com> <bpisoj@gmail.com>
Josip Pisoj <josip@pisoj.com>
Mirko Leonhaeuser <mirko@leonhaeuser.de>
<martin.hawlisch@gmx.de> <loshawlos@users.sourceforge.net>
Matti Niemelä <matti.u.niemela@gmail.com> <niememat@gmail.com>
<nick-h@gramps-project.org> <nick__hall@hotmail.com>
<nick-h@gramps-project.org> <Nick-Hall@users.noreply.github.com>
Ondrej Krč-Jediný <hou@centrum.sk>
<hou@centrum.sk> <ondrisko@users.sourceforge.com>
Pierre Bélissent <pierre.belissent@gmail.com>
Serge Noiraud <Serge.Noiraud@free.fr>
<Serge.Noiraud@free.fr> <serge.noiraud@free.fr>
<Serge.Noiraud@free.fr> <serge.noiraud@laposte.net>
Zdeněk Hataš <zdenek.hatas@gmail.com>
<zdenek.hatas@gmail.com> <zdenek.hatas@hp.com>
<zdenek.hatas@gmail.com> <zenhas@users.sourceforge.net>
<gerald@gkunzmann.de> <g.kunzmann@arcor.de>
Tim G L Lyons <tim.g.lyons@gmail.com>
<tim.g.lyons@gmail.com> <guy.linton@gmail.com>
Elder Evans <elderamevans@gmail.com>
-378
View File
@@ -1,378 +0,0 @@
[MASTER]
# Specify a configuration file.
#rcfile=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Pickle collected data for later comparisons.
persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Use multiple processes to speed up Pylint.
jobs=1
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=
# Allow optimization of some AST trees. This will activate a peephole AST
# optimizer, which will apply various small optimizations. For instance, it can
# be used to obtain the result of joining multiple strings with the addition
# operator. Joining a lot of strings can lead to a maximum recursion error in
# Pylint and this flag can prevent that. It has one side effect, the resulting
# AST will be different than the one from reality.
optimize-ast=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time. See also the "--disable" option for examples.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once).You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=suppressed-message,intern-builtin,round-builtin,unicode-builtin,range-builtin-not-iterating,long-builtin,basestring-builtin,setslice-method,print-statement,reload-builtin,metaclass-assignment,raising-string,next-method-called,import-star-module-level,xrange-builtin,getslice-method,zip-builtin-not-iterating,reduce-builtin,dict-iter-method,delslice-method,using-cmp-argument,hex-method,buffer-builtin,old-ne-operator,nonzero-method,backtick,parameter-unpacking,indexing-exception,file-builtin,filter-builtin-not-iterating,raw_input-builtin,execfile-builtin,oct-method,cmp-method,coerce-builtin,long-suffix,cmp-builtin,input-builtin,dict-view-method,standarderror-builtin,apply-builtin,old-raise-syntax,unichr-builtin,old-division,coerce-method,unpacking-in-except,useless-suppression,no-absolute-import,map-builtin-not-iterating,old-octal-literal
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages
reports=yes
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
[BASIC]
# List of builtins function names that should not be used, separated by a comma
bad-functions=map,filter
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_,db
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
# Regular expression matching correct argument names
argument-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for argument names
argument-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Naming hint for module names
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Regular expression matching correct class attribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Naming hint for class attribute names
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Regular expression matching correct function names
function-rgx=(([a-z_][a-z0-9_]{2,30})|(_T_))$
# Naming hint for function names
function-name-hint=(([a-z_][a-z0-9_]{2,30})|(_T_))$
# Regular expression matching correct inline iteration names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
# Naming hint for inline iteration names
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
# Regular expression matching correct constant names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Naming hint for constant names
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Regular expression matching correct method names
method-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for method names
method-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
# Naming hint for class names
class-name-hint=[A-Z_][a-zA-Z0-9]+$
# Regular expression matching correct variable names
variable-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for variable names
variable-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression matching correct attribute names
attr-rgx=[a-z_][a-z0-9_]{2,30}$
# Naming hint for attribute names
attr-name-hint=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
[ELIF]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format
logging-modules=logging
[SPELLING]
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
[TYPECHECK]
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set). This supports can work
# with qualified names.
ignored-classes=
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=80
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,dict-separator
# Maximum number of lines in a module
max-module-lines=1000
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=_$|dummy
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,_cb
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,__new__,setUp
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,_fields,_replace,_source,_make
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=optparse
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
[DESIGN]
# Maximum number of arguments for function / method
max-args=5
# Argument names that match this expression will be ignored. Default to name
# with leading underscore
ignored-argument-names=_.*
# Maximum number of locals for function / method body
max-locals=15
# Maximum number of return / yield for function / method body
max-returns=6
# Maximum number of branch for function / method body
max-branches=12
# Maximum number of statements in function / method body
max-statements=50
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of attributes for a class (see R0902).
max-attributes=7
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of boolean expressions in a if statement
max-bool-expr=5
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=Exception
+19 -119
View File
@@ -1,129 +1,29 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2015-2015 Doug Blank
# Copyright (C) 2016 DaAwesomeP
# Copyright (C) 2016 QuLogic
# Copyright (C) 2016 Tim G L Lyons
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# After changing this file, check it on:
# http://lint.travis-ci.org/
sudo: required
dist: trusty
language: python
python:
- 3.3 # This is irrelevant, because the virtualenv is not used at all
# FIXME: The minimum requirement for Gramps is Python 3.2, so a test environment
# for Python 3.2 should be added to this environment which is Python 3.3. It
# will not be possible to run coverage under Python 3.2, because coverage is
# Python 3.3 (or above) only.
addons:
apt:
packages:
- gir1.2-pango-1.0
- gir1.2-gtk-3.0
- xdg-utils
- librsvg2-common
- libglib2.0-dev
- intltool
# - python3-gobject Provided by python3-gi
- python3-gi
- python3-cairo
- python3-gi-cairo
- python3-bsddb3
- python3-dev
- python3-nose
- python3-mock
- python3-pyicu
- python3-coverage
- python3-jsonschema
# lxml dependencies. for merge_ref_test to work
# - libxml2-dev
# - libxslt1-dev
- libxml2-utils
- python3-lxml
- python-libxml2
# ubuntu 14.04 requires this in addition to libxml2-dev and
# libxslt1-dev for compiling lxml.
# https://github.com/deanmalmgren/textract/issues/19
- zlib1g-dev
before_install:
language: c
#python:
# - 3.3
# - 3.4
install:
# The working directory is set to /home/travis/build/gramps-project/gramps
# by the automatic git checkout.
- git clone --depth=50 --branch=maintenance/gramps42 git://github.com/gramps-project/gramps.git gramps-project/gramps
- cd gramps-project/gramps
- time sudo apt-get update
- travis_retry sudo apt-get install gir1.2-pango gir1.2-gtk xdg-utils librsvg2-common libglib2.0-dev intltool
- travis_retry sudo apt-get install python3-gobject python3-gi python3-cairo python3-gi-cairo python3-bsddb3 python3-dev python3-nose
# Download Sean Ross-Ross's Pure Python module containing a framework to
# manipulate and analyze python asts and bytecode. This is loaded to
# /home/travis/build/gramps-project/gramps/meta
# FIXME: This should be loaded from the release directory at
# https://pypi.python.org/pypi/meta
- git clone -b master https://github.com/srossross/meta
- travis_retry curl https://bootstrap.pypa.io/get-pip.py | sudo python3
- travis_retry sudo pip3 install Django==1.7
- travis_retry sudo pip3 install pyicu==1.8
- travis_retry sudo pip3 install mock
- python3 setup.py build
# Build Gramps package. This seems to copy everything to
# /home/travis/build/scripts-3.3
- python setup.py build
before_script:
# Create the Gramps database directory.
- mkdir -p ~/.gramps/grampsdb/
# set PYTHONPATH so the directly installed module (meta) is picked up from
# /home/travis/build/gramps-project/gramps/meta
- export PYTHONPATH=meta
# set module exclusions. --exclude=TestUser because of older version of mock
# without configure_mock
- export EXCLUDE="--exclude=TestcaseGenerator"
# --exclude=merge_ref_test"
# set GRAMPS_RESOURCES for locale, data,image and documentation
- export GRAMPS_RESOURCES=.
# Install addons
- mkdir -p ~/.gramps/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
#before_script:
# - sudo Xvfb :99 -ac &
# - export DISPLAY=:99
script:
# Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
# from /usr/bin. Use libraries from /usr/lib/python3.4,
# /usr/local/lib/python3.4/dist-packages and /usr/lib/python3/dist-packages
- nosetests3 --nologcapture --with-coverage --cover-package=gramps $EXCLUDE
gramps
# FIXME: This should have run from the current directory, rather than from
# gramps, because there is some test code in that directory.
# give an error for any trailing whitespace
- if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
echo "ERROR - Trailing whitespace found in source file(s)";
exit 1;
fi
after_success:
# apt-get installs python3-coverage, but codecov only invokes coverage, so make
# a link
- sudo ln /usr/bin/python3-coverage /usr/bin/coverage
# We have to use the bash script because the apt-get coverage does not install
# codecov. If we used pip to install codecov, it would run inside the
# virtualenv, and that doesn't work. Change the path to ensure that codecov
# picks up coverage from /usr/bin, rather than from
# /home/travis/virtualenv/python3.3.6/bin/
- PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)
- mkdir -p /home/travis/.gramps/grampsdb/
- DJANGO_SETTINGS_MODULE=gramps.webapp.settings nosetests3 --exclude=TestcaseGenerator --exclude=vcard --exclude=merge_ref_test gramps
+1 -2
View File
@@ -1,3 +1,4 @@
<!-- $Id$ -->
Alex Roitman shura@gramps-project.org
@@ -64,8 +65,6 @@ Martin Hawlisch martin.hawlisch@gmx.de
Nick Hall nick__hall@hotmail.com
Paul Culley paulr2787@gmail.com
Peter Landgren peter.talken@telia.com
Raphael Ackermann raphael.ackermann@gmail.com
-12
View File
@@ -1,12 +0,0 @@
See developer documentation at:
https://gramps-project.org/wiki/index.php?title=Portal:Developers
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_patchfile
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_PR
If you are interested in translating:
* The Gramps program to your language see:
https://gramps-project.org/wiki/index.php?title=Translating_Gramps
https://gramps-project.org/wiki/index.php?title=Portal:Translators
* The Gramps user manual to your language see:
https://gramps-project.org/wiki/index.php?title=Translating_the_Gramps_User_manual
-458
View File
@@ -1,458 +0,0 @@
2021-07-26 Nick Hall <nick-h@gramps-project.org>
* gramps/gen/const.py: Update copyright date
2021-07-23 SNoiraud <Serge.Noiraud@free.fr>
* gramps/gen/utils/alive.py: Probably alive incorrect if death
without date
2021-07-10 SNoiraud <Serge.Noiraud@free.fr>
* gramps/gui/editors/editplace.py,
gramps/gui/editors/editplaceref.py: Place editor, copy and paste of
lat and long text no longer auto-populating latitude and longitude fields.
Fixes #12349
2021-06-25 prculley <paulr2787@gmail.com>
* gramps/gui/viewmanager.py: Fix for crash when changing views if
part of toolbar is not shown because of a small screen when changing
views. Fixes #12048
2021-06-25 prculley <paulr2787@gmail.com>
* gramps/gui/views/pageview.py: Fix bottombar always showing after
restart, even when not wanted. Fixes #12338
2021-07-09 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update and fix Simplified Chinese translation
2021-07-16 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fixed small German translation error for item also fixed
in Weblate GUI for master
2021-06-28 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation
2021-07-05 pehlm <par.ekholm@pekholm.org>
* po/sv.po: One update Swedish translation
2021-07-03 John Ralls <jralls@ceridwen.us>
* gramps/plugins/db/dbapi/dbapi.py: Better to use
locale.get_collation than locale.collation.
2021-07-03 John Ralls <jralls@ceridwen.us>
* gramps/plugins/db/dbapi/dbapi.py: Wrap call to
dbapi.check_collection to prevent a forced API change.
2021-07-01 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Fix URL for berkeleydb patch.
2021-07-01 John Ralls <jralls@ceridwen.us>
* gramps/plugins/db/dbapi/dbapi.py,
gramps/plugins/db/dbapi/sqlite.py: Always use filtered collation
names. Store the Sqlite3 collations in the __collations array to
short-circuit re-creation. Fixes #12343
2021-06-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Fixed different German translations for "What's next"
also fixed in master (Weblate)
2021-06-23 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* gramps/plugins/rel/rel_de.py: German relation calculator fixed
issue if more then 24 generations between the two person
2021-06-22 Matti Niemelä <matti.u.niemela@gmail.com>
* po/fi.po: Fix translation in Finnish
2021-06-17 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Correct and improve Simplified Chinese translation.
Correct some terribly wrong and low quality translation, even machine
translation. Improve some existing translation for better user experience
as a software, use more written language.
2021-05-31 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Improve and correct Simplified Chinese translation
2021-05-27 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Improve and correct the Simplified Chinese
translation
2021-05-21 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update and improve Simplified Chinese translation
2021-05-17 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation
2020-09-26 Jan Sparreboom <jan@sparreboom.net>
* gramps/gen/datehandler/_date_nl.py, gramps/plugins/rel/rel_nl.py,
po/nl.po: Update Dutch translation
2021-05-07 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Correct and Update Simplified Chinese translation
2020-10-13 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation
2021-05-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Corrected some German translation errors found during
handbook revision
2021-05-04 John Ralls <jralls@ceridwen.us>
* gramps/grampsapp.py: Add file logging for macOS. When Gramps is launched
from macOS's LaunchServices it doesn't have a sys.stderr attached so the
default stream logger goes to /dev/null. Use a FileHandler in tht case,
writing the log to $TMPDIR/gramps-pid.log. This will help particularly in
analyzing crashes where python shuts down as there's no crash report in
that case.
2021-05-06 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Update PyICU to 2.7.2 in macOS build.
2021-05-06 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/lib/libplaceview.py: Fix libplaceview to avoid
exception when mapservice is no longer present (#1193) Fixes #12263
2021-05-06 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/gramplet/backlinks.py: Fix References Gramplet for
inadequate updates when other objects change (#1192) Fixes #12248
2021-05-06 Serge Noiraud <Serge.Noiraud@free.fr>
* gramps/plugins/view/geofamily.py: geofamily crashes if a family
has no father (#1188)
2021-05-06 Serge Noiraud <Serge.Noiraud@free.fr>
* gramps/gen/merge/mergepersonquery.py: Home Person setting does not
convey in a merge. Fixes #12235
2021-05-06 Paul Culley <paulr2787@gmail.com>
* gramps/gen/utils/docgen/csvtab.py: Fix CSV export of view to only
put single CR character. (#1186) Fixes #12158
2021-05-06 Paul Culley <paulr2787@gmail.com>
* gramps/gen/filters/rules/media/__init__.py: Add Media filter rule
'HasMedia' to list of media rules for editor (#1182) Fixes #12212
2021-04-28 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: corrected German translation of "confidence"
2021-04-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: German corrected translation of 'attribute'
2021-04-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Fixed translation error of "display name editor" into
German
2021-04-24 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: some translation fixes for German
2021-04-24 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Changed immigration too, Swedish
2021-04-24 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Correction of Swedish translation
2021-04-22 Helder Geovane Gomes de Lima <he7d3r@gmail.com>
* po/pt_BR.po: Update Portuguese translation (pt_BR) (#1199)
This pull request is an updated version of the patch I've provided
at <https://gramps-project.org/bugs/view.php?id=10547> in 2018, now
based on branch 5.1
2021-04-19 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Corrected translation of markup in German translation
2021-04-17 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Fixed translation of tags in German translation
2021-04-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: German translation for type unified
2021-04-13 romjerome <romjerome@yahoo.fr>
* po/fr.po: 11656: typo, spelling correction contribution by Philippe
2021-04-13 romjerome <romjerome@yahoo.fr>
* gramps/gen/utils/grampslocale.py: Need to set locale.textdomain
under linux (#1198) _build_popup_ui() ignores translated strings without
locale.textdomain set.
2021-04-13 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Fixed German translation of number for places
2021-04-11 John Ralls <jralls@ceridwen.us>
* mac/gramps.bundle, mac/gramps.modules,
mac/patches/berkeleydb-4.8-atomic.patch: Update dependencies.
Includes moving berkeleydb and pybsddb over from gtk-osx.
2021-03-21 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Some small fixes in German translation
2021-03-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Update German translation for csv import/export
2021-03-01 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: small fix in German translation
2021-02-19 Matthias Kemmer <49940207+Mattkmmr@users.noreply.github.com>
* gramps/gen/filters/rules/person/_matcheseventfilter.py: Change
category of 'MatchesEventFilter' (#1130)
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/viewmanager.py, gramps/gui/views/pageview.py: Fix issue
where separator between top and bottom bar of View creeps up.
(#1122) Fixes #11973
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/gramplet/locations.py: Fix Locations Gramplet
(Enclosed by) to properly display certain nested places. (#1127)
when the smallest place has undated enclosure and larger places are dated.
Issue #11691
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/dbman.py: Fix Family Tree Manager drop error on Windows
(#1132) Fixes #10734
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/export/exportvcalendar.py: Fix exportvcalendar
error is "is not" with a literal (Python 3.8 issue) (#1135) Fixes #12000
2021-02-19 Serge Noiraud <Serge.Noiraud@free.fr>
* gramps/gui/clipboard.py: Handle not found when copying source from
the citation tree (#1175) Fixes #12170
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/dbloader.py: DbLoader: Fix call to 'file' function,
which doesn't exist in Python3 (#1173)
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gen/db/utils.py: Fix write_lock_file exception when
USERNAME is missing (#1171) Fixes #12150
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/glade/editplace.glade: Fix EditPlace so Tab key doesn't
get stuck on Private icon (#1168) Fixes #12139
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/textreport/tagreport.py: Fix Tag report for places
that have a hierarchy. (#1162) Fixes #12124
2021-02-19 Paul Culley <paulr2787@gmail.com>
* gramps/gui/viewmanager.py: Fix exception when cancelling out of a
db upgrade in GUI (#1154) Fixes #12063
2021-02-12 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: additional small German translation fixes
2021-02-11 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: Small fixes German translation
2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fix wrong translation of source text in German
translation
2021-02-06 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: fixed small error in German translation
2021-01-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: small fixes German translation
2020-11-06 Chris Mayo <aklhfex@gmail.com>
* setup.py: Install 128x128 and 256x256 application icons created with
ImageMagick using e.g.:
convert -background none ../../../gramps.svg -geometry 256x256 gramps.png
2020-11-06 Chris Mayo <aklhfex@gmail.com>
* data/{gnome-mime-application-x-gedcom.svg =>
application-x-gedcom.svg},
data/{gnome-mime-application-x-geneweb.svg =>
application-x-geneweb.svg},
data/{gnome-mime-application-x-gramps-package.svg =>
application-x-gramps-package.svg},
data/{gnome-mime-application-x-gramps-xml.svg =>
application-x-gramps-xml.svg},
data/{gnome-mime-application-x-gramps.svg =>
application-x-gramps.svg},
setup.py: Install MIME type icons into the hicolor theme.
The gnome theme is defunct. Remove gnome-mime- prefix from icon filenames.
2020-08-20 Nick Hall <nick-h@gramps-project.org>
* images/hicolor/scalable/{actions => apps}/gramps.svg, setup.py:
Install application icons into correct directories
2020-10-15 vantu5z <vantu5z@mail.ru>
* po/ru.po: Update Russian translation
2020-09-25 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation - typo fixes
2020-09-06 Tian Shixiong <tiansworld@fedoraproject.org>
* po/zh_CN.po: Update Simplified Chinese translation
2020-08-16 Jan Sparreboom <jan@sparreboom.net>
* po/nl.po: Update Dutch translation
2020-04-21 Lajos Nemeséri <nemeseril@gmail.com>
* po/hu.po: Revised and updated hu translation
2020-09-13 Juan Saavedra <jcsaaver@gmail.com>
* po/es.po: Update Spanish translation
2020-09-15 bokfink <62996239+bokfink@users.noreply.github.com>
* gramps/plugins/textreport/birthdayreport.py: Fix error in Birthday
and Anniversary report (#1113) Fixes an error triggered when the first
person_handle in the list has a death event, but no birth event
(get_birth_ref() == None) and does not have family relationships
(spouse_handle == None). These conditions lead to the local variable
short_name not being declared before it comes time to process death events.
Fixes #11766
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gen/plug/docgen/graphdoc.py: Fix graphdoc to properly
escape characters in ids for Graphviz (#1111) Fixes #11741
2020-09-14 John Ralls <jralls@ceridwen.us>
* gramps/gen/db/dummydb.py, gramps/gen/db/txn.py,
gramps/gen/db/utils.py, gramps/gen/dbstate.py,
gramps/gen/filters/rules/test/person_rules_test.py,
gramps/gen/utils/callback.py, gramps/plugins/db/bsddb/bsddbtxn.py:
Replace inspect.stack() with inspect.currentframe() (#1104)
* Replace inspect.stack() with inspect.currentframe() Fixes #11874
Works around https://bugs.python.org/issue12920 which causes every
call to inspect.trace() to fail because __main__ is always the
starting point. * Fix a few Codecov complaints from files touched by
previous commit. Ignoring the "duplicate code" issue caused by the empty
comment line at the beginning of every file.
2020-09-14 RossGammon <rossgammon@mail.dk>
* debian/changelog, debian/copyright: Update Debian directory after
producing the deb file for the 5.1.3 (#1100) Release.
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gui/selectors/baseselector.py: Fix crash sorting on columns
in Selectors with TreeModels (#1099) Fixes #11750
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/gui/dbloader.py, gramps/gui/displaystate.py,
gramps/gui/uimanager.py, gramps/gui/utils.py,
gramps/gui/viewmanager.py: Fix progress bar freeze due to changes in
Gtk (#1103) Fixes #11642
2020-09-14 Paul Culley <paulr2787@gmail.com>
* gramps/plugins/docgen/svgdrawdoc.py: Fix svgdrawdoc for text
containing XML invalid characters (#1110) Fixes #11929
2020-08-30 John Ralls <jralls@ceridwen.us>
* mac/gramps.bundle: Further changes for bundling with Python 3.8.
2020-08-30 John Ralls <jralls@ceridwen.us>
* mac/gramps.bundle: Add libgeocode-glib to bundle so that it
actually works.
2020-08-26 Mirko Leonhaeuser <mirko@leonhaeuser.de>
* po/de.po: German translation two small corrections
2020-08-25 John Ralls <jralls@ceridwen.us>
* mac/gramps_launcher.py: [mac] Set __file__ if gramps_launcher.py
is run as __main__. Fixes #11874.
2020-08-21 Zdeněk Hataš <zdenek.hatas@gmail.com>
* po/cs.po: Update Czech translation
2020-08-20 John Ralls <jralls@ceridwen.us>
* mac/Info.plist, mac/gramps.modules: Bundle release of Gramps
5.1.3.
2020-08-20 John Ralls <jralls@ceridwen.us>
* mac/gramps.modules: Add geocode-glib to build.
2020-08-12 pehlm <par.ekholm@pekholm.org>
* po/sv.po: Update Swedish translation
2020-08-12 prculley <paulr2787@gmail.com>
* Bump to 5.1.4
+6 -5
View File
@@ -133,7 +133,7 @@ Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
An Windows installer is available for 32 and 64 bit versions of windows from Windows versions 7 through 10. As with all other support, we do do our best to solve windows related problems.
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
8. Does it work with the Mac?
@@ -145,7 +145,7 @@ This present version of Gramps (2.2.x) does not appear to have been ported by th
9. What are the Minimum Specs to run Gramps?
We would recommend at least an 800x600 video display. For Gramps 5.x, Gramps can run quite efficiently on a 3GB memory system. A system with that much RAM should be able to hold more than 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
We would recommend at least an 800x600 video display. For Gramps 2.0, the memory requirements have been reduced, and Gramps can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
==Preferences==
@@ -181,7 +181,7 @@ The nice thing about standards is that there never is a shortage of them. Gramps
15. How do I import data from another genealogy program into Gramps?
The best way is to create a new gramps database file, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
@@ -212,7 +212,7 @@ their own plugins which could be new reports, charts, or research tools.
18. In what formats can Gramps output its reports?
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and Graphviz formats.
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.
19. How can I change the default language in reports?
@@ -315,7 +315,7 @@ gramps-devel@lists.sf.net :-)
The next best thing would be to submit a good bug report. This can be done in
one of the two ways: (1) send your report to gramps-bugs@lists.sf.net
or (2) file your report with the bug tracker system at
https://gramps-project.org/bugs/ (this function is also
http://bugs.gramps-project.org (this function is also
available by selecting "Help->Report a bug" from gramps main menu).
A good bug report would include:
@@ -355,3 +355,4 @@ Since Gramps generates HTML pages, you can upload the pages to your personal web
**** End of Gramps Frequently Asked Questions ****
$Id$
+2
View File
@@ -25,5 +25,7 @@ able to run gramps from the source directory without setting PYTHONPATH
From this position, import gramps works great
"""
import os
os.environ['GRAMPS_RESOURCES'] = os.path.dirname(os.path.abspath(__file__))
import gramps.grampsapp as app
app.main()
+8 -8
View File
@@ -33,11 +33,11 @@ all required and optional dependencies. Missing dependencies will
result in runtime errors.
To build and install, whether from a tarball or git repo:
python3 setup.py build
sudo python3 setup.py install
python setup.py build
sudo python setup.py install
You can avoid using sudo for the install step by specifying a prefix to which you have write priviledge. The default is /usr/local, which is usually owned by root. You can learn of more options with
python3 setup.py --help
python setup.py --help
One can use gramps from the command line without installing it by
setting the following environment variables, but that won't provide
@@ -71,7 +71,7 @@ from the source directory.
b) You installed Gramps, and want to start it from the PYTHONPATH. In this
case use the command:
python3 -c 'from gramps.grampsapp import main; main()'
python -c 'from gramps.grampsapp import main; main()'
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
this for you.
@@ -79,7 +79,7 @@ from the source directory.
b) You downloaded the Gramps source code to a directory, and want to run it.
You can start Gramps from the source code directory with
python3 Gramps.py
python Gramps.py
See gramps/gen/const.py how Gramps finds its resource directories in case
you encounter problems.
@@ -90,17 +90,17 @@ If you would like to install Gramps without being root, or in an
alternative location on windows, supply the --root argument to setup.py
For example:
python3 setup.py install --root ~/test
python setup.py install --root ~/test
Packager's issues
------------------
There is a MANIFEST.in file to indicate the work needed.
To create a source distribution run:
python3 setup.py sdist
python setup.py sdist
If Gramps is built outside of the source tree in a temporary location (e.g. when
packaging for a distribution), the --resourcepath option can be used to specify
the path to the installed location of the Gramps resources (e.g. /usr/share):
python3 setup.py install --resourcepath=/usr/share
python setup.py install --resourcepath=/usr/share
+397
View File
@@ -0,0 +1,397 @@
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
+4 -3
View File
@@ -1,14 +1,13 @@
include AUTHORS
include ChangeLog
include COPYING
include FAQ
include Gramps.py
include INSTALL
include LICENSE
include MANIFEST.in
include NEWS
include RELEASE_NOTES
include TODO
include CONTRIBUTING
include TestPlan.txt
recursive-include data *
recursive-include debian *
@@ -23,9 +22,11 @@ recursive-include windows *
# Remove files created in the build
exclude data/tips.xml
exclude data/holidays.xml
exclude gramps/plugins/lib/holidays.xml
exclude po/.intltool-merge-cache
global-exclude *.pyc
global-exclude *.pyo
# Remove directories which should not be included in the distribution
prune gramps/guiQML
#prune gramps/webapp
+10 -1066
View File
File diff suppressed because it is too large Load Diff
+93
View File
@@ -0,0 +1,93 @@
Please read the COPYING file first.
Please read the INSTALL file if you intend to build from source.
Requirements
--------------------------------
The following packages *MUST* be installed in order for Gramps to work:
Python 3.2 or greater
GTK 3.10 or greater
pygobject 3.3.2 or greater
cairo, pango, pangocairo with introspection bindings (the gi packages)
librsvg2 (svg icon view)
xdg-utils
bsddb3
The following package is needed for full translation of the interface
to your language:
language-pack-gnome-xx
Translation of GTK elements to your language, with
xx your language code; e.g. for Dutch you need
language-pack-gnome-nl. The translation of the
Gramps strings is included with the gramps source.
The following packages are *STRONGLY RECOMMENDED* to be installed:
osmgpsmap Used to show maps in the geography view.
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
but the Python bindings for this must also be present.
Without this the GeoView will not be active, see
http://gramps-project.org/wiki/index.php?title=Gramps_4.1_Wiki_Manual_-_Main_Window#Geography_Category
GraphViz Enable creation of graphs using GraphViz engine.
Without this, three reports cannot be run.
Obtain it from: http://www.graphviz.org
PyICU Improves localised sorting in Gramps. In particular, this
applies to sorting in the various views and in the
Narrative Web output. It is particularly helpful for
non-Latin characters, for non-English locales and on MS
Windows and Mac OS X platforms. If it is not available,
sorting is done through built-in libraries. PyICU is
fairly widely available through the package managers of
distributions. See http://pyicu.osafoundation.org/
(These are Python bindings for the ICU package.)
The following packages are optional
gtkspell Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
rcs The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.1_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
PIL Python Image Library is needed to crop
images and also to convert non-JPG images to
JPG so as to include them in LaTeX output.
(For Python3 a different source may be needed,
python-imaging or python-pillow or python3-pillow)
GExiv2 Enables Gramps to manage Exif metadata embedded in your
media. Gramps needs version 0.5 or greater.
See http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
ttf-freefont More font support in the reports
gir-webkit Required for the (user-downloadable) HtmlView plugin
goocanvas2 Required for the (user-downloadable) GraphView plugin
No longer needed in 4.1:
?
No longer needed in 4.0:
pygoocanvas, pygtk, pyexiv2
No longer needed in 3.3:
python-enchant Enchant
No longer needed in 3.2:
python glade bindings
No longer needed in 3.1:
yelp Gnome help browser. No offline help is shipped see Gramps website for User manual
Documentation
---------------------------------
The User Manual is maintained on the Gramps website,
http://www.gramps-project.org/wiki/index.php?title=User_manual
--------------------------------
The Gramps Project
http://gramps-project.org
-165
View File
@@ -1,165 +0,0 @@
The Gramps Project ( https://gramps-project.org ) [![Build Status](https://travis-ci.org/gramps-project/gramps.svg?branch=master)](https://travis-ci.org/gramps-project/gramps)[![codecov.io](https://codecov.io/github/gramps-project/gramps/coverage.svg?branch=master)](https://codecov.io/github/gramps-project/gramps?branch=master)
===================
We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.
Please read the **COPYING** file first.
Please read the **INSTALL** file if you intend to build from source.
Requirements
============
The following packages **MUST** be installed in order for Gramps to work:
* **Python** 3.3 or greater - The programming language used by Gramps. https://www.python.org/
* **GTK** 3.12 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
* **pygobject** 3.12 or greater - Python Bindings for GLib/GObject/GIO/GTK+ https://wiki.gnome.org/Projects/PyGObject
The following three packages with GObject Introspection bindings (the gi packages)
* **cairo** 1.13.1 or greater - a 2D graphics library with support for multiple output devices. http://cairographics.org/
* **Pycairo** 1.13.3 or greater - GObject Introspection bindings for cairo. https://github.com/pygobject/pycairo
* **pango** - a library for laying out and rendering of text, with an emphasis on internationalization. http://www.pango.org/
* **pangocairo** - Allows you to use Pango with Cairo http://www.pango.org/
* **librsvg2** - (SVG icon view) a library to render SVG files using cairo. http://live.gnome.org/LibRsvg
* **xdg-utils** - Desktop integration utilities from freedesktop.org
* **bsddb3** - Python bindings for Oracle Berkeley DB https://pypi.python.org/pypi/bsddb3/
* **sqlite3** - Python bindings for SQLite Database library
The following package is needed for full translation of the interface
to your language:
* **language-pack-gnome-xx**
Translation of GTK elements to your language, with
xx your language code; e.g. for Dutch you need
language-pack-gnome-nl. The translation of the
Gramps strings is included with the gramps source.
The following packages are **STRONGLY RECOMMENDED** to be installed:
--------------------------------------------------------------------
* **osmgpsmap**
Used to show maps in the geography view.
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
but the Python bindings for this must also be present, so gir1.2-osmgpsmap-1.0.
Without this the GeoView will not be active, see
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Categories#Geography_Category
* **Graphviz**
Enable creation of graphs using Graphviz engine.
Without this, three reports cannot be run.
Obtain it from: http://www.graphviz.org or try graphviz and python3-pygraphviz from your packages.
* **PyICU**
Improves localised sorting in Gramps. In particular, this
applies to sorting in the various views and in the
Narrative Web output. It is particularly helpful for
non-Latin characters, for non-English locales and on MS
Windows and Mac OS X platforms. If it is not available,
sorting is done through built-in libraries. PyICU is
fairly widely available through the package managers of
distributions. See http://pyicu.osafoundation.org/
(These are Python bindings for the ICU package.
https://pypi.python.org/pypi/PyICU/)
* **Ghostscript**
Used by Graphviz reports to help create PDF's
The following packages are optional:
------------------------------------
* **gtkspell**
Enable spell checking in the notes. Gtkspell depends on
enchant. A version of gtkspell with gobject introspection
is needed, so minimally version 3.0.0
* **rcs**
The GNU Revision Control System (RCS) can be used to manage
multiple revisions of your family trees. See info at
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
Only rcs is needed, NO python bindings are required
* **PIL**
Python Image Library (PILLOW) is needed to crop
images and also to convert non-JPG images to
JPG so as to include them in LaTeX output.
(For Python3 a different source may be needed,
python-imaging or python-pillow or python3-pillow)
* **GExiv2**
Enables Gramps to manage Exif metadata embedded in your
media. Gramps needs version 0.5 or greater.
See https://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
* **ttf-freefont**
More font support in the reports
* **geocodeglib**
A library use to associate a geographical position (latitude, longitude)
to a place name. This is used if you already have osmgpsmap installed.
If installed, when you add or link a place from the map, you have a red line
at the end of the table for selection.
Debian, Ubuntu, ... : gir1.2-geocodeglib-1.0
Fedora, Redhat, ... : geocode-glib
openSUSE : geocode-glib
ArchLinux : geocode-glib
...
* **fontconfig**
Python bindings of fontconfig are required for displaying
genealogical symbols
Optional packages required by Third-party Addons
------------------------------------------------
**Third-party Addons are written by users and developers and unless stated are not officially part of Gramps.**
For more information about Addons see: https://gramps-project.org/wiki/index.php?title=Third-party_Plugins
Prerequistes required for the following Addons to work:
* **Family Sheet** - Requires: PIL (Python Imaging Library) or PILLOW.
( https://gramps-project.org/wiki/index.php?title=Family_Sheet )
* **Graph View** - Requires: PyGoocanvas and Goocanvas (python-pygoocanvas, gir1.2-goocanvas-2.0).
( https://gramps-project.org/wiki/index.php?title=Graph_View )
* **Network Chart** - Requires: networkx and pygraphviz
( https://gramps-project.org/wiki/index.php?title=NetworkChart )
* **PedigreeChart** - Can optionally use - numpy if installed
( https://gramps-project.org/wiki/index.php?title=PedigreeChart )
No longer needed:
-----------------
* Since Gramps 4.2:
**gir-webkit**
* Since Gramps 4.0:
**pygoocanvas, pygtk, pyexiv2**
* Since Gramps 3.3:
**python-enchant Enchant**
* Since Gramps 3.2:
**python glade bindings**
* Since Gramps 3.1:
**yelp** - Gnome help browser. No offline help is shipped see Gramps website for User manual
Documentation
-------------
The User Manual is maintained on the Gramps website:
* https://www.gramps-project.org/wiki/index.php?title=User_manual
+1
View File
@@ -1,3 +1,4 @@
$Id$
UNSTABLE Gramps 4.0.0 Beta2 release.
-23
View File
@@ -1,23 +0,0 @@
_gramps()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--action --config --create --databases --debug --export --format --help --import --open --options --quiet --remove --show --usage --version --yes -? -C -L -O -a -b -c -d -e -f -i -l -p -q -r -s -t -u -v -y"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
elif [[ ${cur} == --open ]] ; then
local IFS=$'\n'
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
COMPREPLY=( $(compgen --W "${names[*]}" -- ${cur}) )
return 0
else
local IFS=$'\n'
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
COMPREPLY=( $(compgen -W "${names[*]}" -- ${cur}) )
return 0
fi
}
complete -F _gramps gramps
+1 -3
View File
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Id$ -->
<authors xmlns:html="http://www.w3.org/1999/xhtml">
<author title="author">
Alex Roitman &lt;<html:a href="mailto:shura@gramps-project.org">shura@gramps-project.org</html:a>&gt;
@@ -93,9 +94,6 @@
<author title="contributor">
Nick Hall &lt;<html:a href="mailto:nick__hall@hotmail.com">nick__hall@hotmail.com</html:a>&gt;
</author>
<author title="contributor">
Paul Culley &lt;<html:a href="mailto:paulr2787@gmail.com">paulr2787@gmail.com</html:a>&gt;
</author>
<author title="contributor">
Peter Landgren &lt;<html:a href="mailto:peter.talken@telia.com">peter.talken@telia.com</html:a>&gt;
</author>
+55
View File
@@ -0,0 +1,55 @@
/*
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright 2009 Serge Noiraud
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
----------------------------------------------------------------------------
GeoView Style Sheet
Style Name: GeoView
Style Author: Serge Noiraud (2009)
----------------------------------------------------------------------------
This file was created for GeoView usage.
# $Id$
GeoView Styles
----------------------------------------------------- */
#geo-map
{
margin-left:0px;
margin-top:0px;
margin-right:auto;
margin-bottom:auto;
}
/* InfoWindow */
#geo-info {
font-size:10pt;
max-height:200px;
max-width: 600px;
min-width: 300px;
text-align: left;
padding-right: 6px;
overflow-x: auto;
overflow-y: auto;
}
+12 -206
View File
@@ -21,8 +21,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -52,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -61,7 +60,7 @@ the page.
body {
font-family: sans-serif;
font-size: 100%;
font-size: 90%;
color: black;
margin: 0px;
background-color: #EEE;
@@ -69,13 +68,6 @@ body {
body > div {
clear: both;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: white;
border-top: solid 1px #999;
@@ -84,19 +76,9 @@ body > div {
float: right;
margin: 2em;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -105,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -128,7 +104,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
text-decoration: underline;
@@ -224,93 +199,6 @@ div#alphanav ul li a:hover {
color: white;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #EEE;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table {
@@ -437,10 +325,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -473,15 +357,7 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display: block;
border: solid 1px #999;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail h3 {
text-align: center;
}
@@ -498,10 +374,13 @@ div#SourceDetail {
overflow: hidden;
}
#Contact #summaryarea {
width: 50em;
margin: 2em auto;
padding: 3em;
background-color: #EEE;
border: solid 1px #999;
}
#Contact #GalleryDisplay img {
#Contact img {
float: right;
border: solid 1px #999;
}
@@ -515,12 +394,6 @@ div#SourceDetail {
#Contact #city:after {
content: ",";
}
@media only screen and (max-width: 1080px) {
#Contact,
#Contact #GalleryDisplay img {
max-width: 100%;
}
}
/* Download
----------------------------------------------------- */
@@ -530,22 +403,13 @@ div#SourceDetail {
/* Subsection
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay {
#Home, #Introduction {
overflow: hidden;
}
#Home img, #Introduction img {
float: right;
margin: 1em;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img {
display: block;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
}
#Home p, #Introduction p {
padding-left: 15px;
@@ -575,33 +439,13 @@ div#families table.attrlist td.ColumnType {
/* Subsection : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
background-color: white;
}
#indivgallery h4 + .thumbnail {
margin-left: 15px;
@@ -609,40 +453,6 @@ div#families table.attrlist td.ColumnType {
* first thumnail on each next row should also have a margin-left
* of 15 px. */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery img {
border: solid 1px #999;
}
@@ -650,9 +460,6 @@ div#families table.attrlist td.ColumnType {
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
display: none; */
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsection : Narrative
----------------------------------------------------- */
@@ -716,7 +523,6 @@ a.familymap {
}
#footer > * {
background-color: #EEE;
font-size: 80%;
}
#footer p#createdate {
float: left;
+35 -312
View File
@@ -3,8 +3,6 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
# Copyright (C) 2018 Theo van Rijn
# Copyright (C) 2019 Serge Noiraud
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -74,13 +72,6 @@ img {
.thumbnail a:hover {
background: none;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: #FFF;
color: #000;
@@ -103,10 +94,6 @@ img {
width: 96px;
margin: 0 auto;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
width: 100%;
height: 1px;
@@ -114,12 +101,6 @@ img {
padding: 0;
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -153,6 +134,7 @@ h5, h6 {
margin:1.3em 0 .5em 1em;
}
p#description {
max-width: 800px;
margin: 0;
padding: 1em 20px;
text-indent: 30px;
@@ -240,55 +222,6 @@ p#user_header {
margin-right: 10px;
}
/* Navigation
----------------------------------------------------- */
div#nav, #subnavigation {
border: solid 1px #EEE; /* needed by IE7 */
background-color: #13A926;
}
#subnavigation ul {
overflow: hidden;
}
div#nav ul, #subnavigation ul {
list-style: none;
margin: 0px;
padding-left: 15px;
}
#subnavigation ul {
border-bottom: solid 1px #999;
}
div#nav ul li, #subnavigation ul li {
float: left;
}
div#nav ul li a, #subnavigation ul li a {
display: block;
font-size: smaller;
font-weight: bold;
padding: 5px;
border-bottom: solid 1px #EEE;
}
div#nav ul li a:hover, #subnavigation ul li a:hover {
text-decoration: none;
background-color: #CCC;
border-bottom: solid 1px black;
}
div#nav ul li.CurrentSection a {
position: relative;
top: 1px;
border: solid 1px #999;
border-bottom-style: none;
background-color: white;
}
#nav ul li.CurrentSection a:hover {
background-color: #903;
}
/* Webcal
----------------------------------------------------- */
#subnavigation ul li.CurrentSection a {
background-color: white;
}
/* Footer
----------------------------------------------------- */
div#footer {
@@ -338,129 +271,6 @@ div#footer p#copyright img {
padding: 0;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
/* Alphabet Navigation
----------------------------------------------------- */
div#alphanav {
background-color: #EEE;
}
div#alphanav ul {
list-style: none;
border-width: 2px 0px 4px 0px;
border-style: solid;
border-color: black;
margin: 0px;
padding-left: 15px;
/* float container stretch, see www.quirksmode.org/css/clearing.html */
overflow: hidden;
}
div#alphanav ul li {
float: left;
font-size: larger;
font-weight: bold;
}
div#alphanav ul li:after {
content: " |";
}
div#alphanav ul li a {
display: block;
padding: 4px 8px;
line-height: 100%;
float: left;
}
div#alphanav ul li a:hover {
text-decoration: none;
background-color: black;
color: white;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
/* position: absolute; */
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #13A926;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table.infolist {
@@ -479,6 +289,10 @@ table.infolist thead tr th {
table.infolist tr td {
border-bottom: dashed 1px #000;
vertical-align: middle;
padding: 6px 0 6px 10px;
}
table.infolist tr td a {
display: block;
}
table.infolist tr.BeginLetter td, table.infolist tr.BeginSurname td {
border-top: solid 1px #000;
@@ -538,15 +352,15 @@ div#Individuals {
margin: 0;
padding: 0;
}
div#Individuals table.IndividualList {
div#Individuals table.individuallist {
border-bottom: solid 1px #000;
}
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
cursor: default;
background: none;
}
div#Individuals table.IndividualList tbody tr td.ColumnName a {
div#Individuals table.individuallist tbody tr td.ColumnName a {
vertical-align: middle;
}
div#Individuals div table.infolist tr td p {
@@ -680,7 +494,7 @@ table.eventlist tbody tr td.ColumnNotes {
width: 20%;
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
width: 17%;
}
table.eventlist tbody tr td.ColumnPerson {
width: 35%;
@@ -769,26 +583,6 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
margin: 0;
padding: 0;
}
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#Gallery table.infolist tbody tr td {
border-bottom: dashed 1px #000;
}
@@ -838,15 +632,7 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
}
#GalleryDisplay img {
margin: 0 auto;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail div#summaryarea{
margin: 0;
padding: 2em 0 0 0;
@@ -898,51 +684,48 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
/* Contact
------------------------------------------------- */
#Contact #summaryarea {
width: 500px;
margin: 0 auto;
padding: 3em;
border: double 4px #000;
background-color: #BCEAF6;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact #summaryarea img {
float: right;
margin: 0;
}
@media only screen and (max-width: 1080px) {
#Contact, #Contact #summaryarea #researcher,
#Contact #summaryarea #GalleryDisplay img {
max-width: 100%;
}
}
#Contact #summaryarea #researcher {
#researcher {
font: normal 1.5em/1.4em serif;
margin-top: .3em;
}
#Contact #summaryarea #researcher h3 {
#researcher h3 {
font: normal 1.2em/1.4em serif;
padding: 0;
text-align: left;
}
#Contact #summaryarea #researcher span {
#researcher span {
float: left;
display: block;
font: normal .9em/1.4em serif;
margin-right: .4em;
}
#Contact #summaryarea #streetaddress {
#streetaddress {
width: 100%;
}
#Contact #summaryarea #locality, .locality {
#locality, .locality {
display: block;
width: 100%;
}
#Contact #summaryarea #city:after {
#city:after {
content: ",";
}
#Contact #summaryarea #country {
#country {
clear: left;
}
#Contact #summaryarea #email {
#email {
clear: left;
}
#Contact #summaryarea #email a {
#email a {
text-decoration: none;
}
@@ -1035,29 +818,17 @@ div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
/* Subsections
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay,
#Contact #GalleryDisplay {
float: right;
margin: 0;
border: 0px;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
#Home, #Introduction, #Contact {
padding: 2em 0 3em 0;
}
#Home p, #Introduction p {
margin: 0 20px 1em 20px;
}
#Home img, #Introduction img {
float: right;
margin: 0;
padding: 0 20px 3em 2em;
}
#Home a, #Introduction a, #Contact a {
color: #000;
text-decoration: none;
@@ -1161,15 +932,6 @@ div#families {
margin: 0;
padding: 0;
}
div#families .infolist h4 {
font: bold 1.2em sans-serif;
color: #FFF;
padding: 0px 0px 0px 20px;
border-width: 4px 0px 4px 0px;
border-style: solid;
border-color: #00029D;
background-color: #13A926;
}
div#families table.infolist tbody tr.BeginFamily {
border-top: solid 1px #000;
}
@@ -1336,8 +1098,8 @@ div.Residence table.infolist tr td {
margin: 0;
float: left;
width: 130px;
height: 150px;
text-align: center;
background-color: white;
}
#indivgallery div.thumbnail a {
display: block;
@@ -1345,7 +1107,6 @@ div.Residence table.infolist tr td {
padding: 0;
text-decoration: none;
cursor: pointer;
word-wrap: break-word;
}
#indivgallery div.thumbnail a img {
padding: 0;
@@ -1361,43 +1122,6 @@ div.Residence table.infolist tr td {
margin: 0 auto;
padding: 0;
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsections : Narrative
----------------------------------------------------- */
@@ -1406,10 +1130,9 @@ div.narrative {
}
.narrative p {
font: normal .9em/1.4em sans-serif;
margin: 0.1em 0 0.2em 0;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
margin-top: .5em;
margin-bottom: 0;
padding: 0 20px 1em 20px;
}
/* Subsections : References
+14 -209
View File
@@ -21,8 +21,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -52,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -61,7 +60,7 @@ the page.
body {
font-family: sans-serif;
font-size: 100%;
font-size: 90%;
color: black;
margin: 0px;
background-color: #454;
@@ -69,13 +68,6 @@ body {
body > div {
clear: both;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: white;
border-top: solid 1px #7C8F7C;
@@ -84,19 +76,9 @@ body > div {
float: right;
margin: 2em;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -105,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -128,7 +104,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #9DBF9D;
@@ -228,98 +203,6 @@ div#alphanav ul li a:hover {
color: white;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
color: #454;
background-color: #E0E6E0;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
.nav.responsive li#CurrentSection a {
color: #454;
background-color: white;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table {
@@ -485,10 +368,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -524,15 +403,7 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display: block;
border: solid 1px #7C8F7C;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail h3 {
text-align: center;
}
@@ -549,10 +420,13 @@ div#SourceDetail {
overflow: hidden;
}
#Contact #summaryarea {
width: 40em;
margin: 2em auto;
padding: 3em;
background-color: #E0E6E0;
border: solid 1px #7C8F7C;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact img {
float: right;
border: solid 1px #7C8F7C;
}
@@ -579,24 +453,13 @@ div#SourceDetail {
/* Subsection
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin: 0;
border: 0px;
#Home, #Introduction {
overflow: hidden;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
#Home img, #Introduction img {
float: right;
margin: 1em;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
}
#Home p, #Introduction p {
padding-left: 15px;
@@ -626,33 +489,13 @@ div#families table.attrlist td.ColumnType {
/* Subsection : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
background-color: white;
}
#indivgallery h4 + .thumbnail {
margin-left: 15px;
@@ -660,40 +503,6 @@ div#families table.attrlist td.ColumnType {
* first thumnail on each next row should also have a margin-left
* of 15 px. */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery img {
border: solid 1px #7C8F7C;
}
@@ -701,9 +510,6 @@ div#families table.attrlist td.ColumnType {
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
display: none; */
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsection : Narrative
----------------------------------------------------- */
@@ -762,7 +568,6 @@ a.familymap {
#footer {
clear: both;
color: #E0E6E0;
font-size: 80%;
padding-top: 1em;
background-color: #9DBF9D;
border-top: solid 1px #454;
@@ -790,7 +595,7 @@ a.familymap {
/* Overwritten
----------------------------------------------------- */
body#FamilyMap {
background-color: #454 ! important;
background-color: #E0E6E0 ! important;
}
/* Calendar Styles
+12 -202
View File
@@ -21,8 +21,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -52,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -69,13 +68,6 @@ body {
body > div {
clear: both;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: #FAFAFF;
border-top: solid 1px #669;
@@ -84,19 +76,9 @@ body > div {
float: right;
margin: 2em;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -105,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -129,7 +105,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #E0E0E9
@@ -226,93 +201,6 @@ div#alphanav ul li a:hover {
color: #FAFAFF;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #669;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table {
@@ -473,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -512,15 +396,7 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display: block;
border: solid 1px #669;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail h3 {
text-align: center;
}
@@ -537,10 +413,13 @@ div#SourceDetail {
overflow: hidden;
}
#Contact #summaryarea {
width: 40em;
margin: 2em auto;
padding: 3em;
background-color: #E0E0E9;
border: solid 1px #669;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact img {
float: right;
border: solid 1px #669;
}
@@ -567,24 +446,13 @@ div#SourceDetail {
/* Subsection
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin: 0;
border: 0px;
#Home, #Introduction {
overflow: hidden;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
#Home img, #Introduction img {
float: right;
margin: 1em;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
}
#Home p, #Introduction p {
padding-left: 15px;
@@ -614,33 +482,13 @@ div#families table.attrlist td.ColumnType {
/* Subsection : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
background-color: white;
}
#indivgallery h4 + .thumbnail {
margin-left: 15px;
@@ -648,40 +496,6 @@ div#families table.attrlist td.ColumnType {
* first thumnail on each next row should also have a margin-left
* of 15 px. */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery img {
border: solid 1px #669;
}
@@ -689,9 +503,6 @@ div#families table.attrlist td.ColumnType {
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
display: none; */
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsection : Narrative
----------------------------------------------------- */
@@ -755,7 +566,6 @@ a.familymap {
}
#footer > * {
background-color: #E0E0E9;
font-size: 80%;
}
#footer p#createdate {
float: left;
+14 -203
View File
@@ -21,8 +21,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -52,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -61,7 +60,7 @@ the page.
body {
font-family: sans-serif;
font-size: 100%;
font-size: 90%;
color: #36220B;
margin: 0px;
background-color: #FFE09F;
@@ -69,13 +68,6 @@ body {
body > div {
clear: both;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: #FFFBE7;
border-top: solid 1px #8C581C;
@@ -84,19 +76,9 @@ body > div {
float: right;
margin: 2em;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -105,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -129,7 +105,6 @@ p#description {
a {
color: #36220B;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFE09F
@@ -226,93 +201,6 @@ div#alphanav ul li a:hover {
color: #FFFBE7;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #FFC35E;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table {
@@ -473,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -512,13 +396,6 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display: block;
border: solid 1px #EA8414;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail h3 {
text-align: center;
@@ -536,10 +413,13 @@ div#SourceDetail {
overflow: hidden;
}
#Contact #summaryarea {
width: 40em;
margin: 2em auto;
padding: 3em;
background-color: #FFE09F;
border: solid 1px #EA8414;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact img {
float: right;
border: solid 1px #EA8414;
}
@@ -566,31 +446,20 @@ div#SourceDetail {
/* Subsection
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin: 0;
border: 0px;
#Home, #Introduction {
overflow: hidden;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
#Home img, #Introduction img {
float: right;
margin: 1em;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
}
#Home p, #Introduction p {
padding-left: 15px;
}
.subsection {
clear: both;
overflow: visible;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -613,33 +482,13 @@ div#families table.attrlist td.ColumnType {
/* Subsection : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
background-color: white;
}
#indivgallery h4 + .thumbnail {
margin-left: 15px;
@@ -647,40 +496,6 @@ div#families table.attrlist td.ColumnType {
* first thumnail on each next row should also have a margin-left
* of 15 px. */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery img {
border: solid 1px #8C581C;
}
@@ -688,9 +503,6 @@ div#families table.attrlist td.ColumnType {
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
display: none; */
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsection : Narrative
----------------------------------------------------- */
@@ -754,7 +566,6 @@ a.familymap {
}
#footer > * {
background-color: #FFE09F;
font-size: 80%;
}
#footer p#createdate {
float: left;
+13 -203
View File
@@ -21,9 +21,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -53,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
window and that horizontal highlighting bars extend over the full width of
the page.
--------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
------------------------------------------------------------------------------------------------
@@ -62,7 +60,7 @@ the page.
body {
font-family: sans-serif;
font-size: 100%;
font-size: 90%;
color: black;
margin: 0px;
background-color: #EAEEF4;
@@ -70,13 +68,6 @@ body {
body > div {
clear: both;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
background-color: #FFF;
border-top: solid 1px #7CA3DD;
@@ -85,19 +76,9 @@ body > div {
float: right;
margin: 2em;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.fullclear {
clear: both;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
----------------------------------------------------- */
@@ -106,12 +87,6 @@ h1 {
font-weight: bold;
padding-left: 15px;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: large;
padding-left: 15px;
@@ -130,7 +105,6 @@ p#description {
a {
color: black;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #EAEEF4
@@ -227,93 +201,6 @@ div#alphanav ul li a:hover {
color: #FFF;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #EEE;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table {
@@ -474,10 +361,6 @@ table.IndividualList td.ColumnSurname {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#GalleryNav {
@@ -513,13 +396,6 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display: block;
border: solid 1px #7CA3DD;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail h3 {
text-align: center;
@@ -537,10 +413,13 @@ div#SourceDetail {
overflow: hidden;
}
#Contact #summaryarea {
width: 40em;
margin: 2em auto;
padding: 3em;
background-color: #EAEEF4;
border: solid 1px #7CA3DD;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact img {
float: right;
border: solid 1px #7CA3DD;
}
@@ -567,24 +446,13 @@ div#SourceDetail {
/* Subsection
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin: 0;
border: 0px;
#Home, #Introduction {
overflow: hidden;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
#Home img, #Introduction img {
float: right;
margin: 1em;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
margin: 0 auto;
max-width: 100%;
}
}
#Home p, #Introduction p {
padding-left: 15px;
@@ -614,33 +482,13 @@ div#families table.attrlist td.ColumnType {
/* Subsection : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.8em 0.5em;
background-color: white;
}
#indivgallery h4 + .thumbnail {
margin-left: 15px;
@@ -648,40 +496,6 @@ div#families table.attrlist td.ColumnType {
* first thumnail on each next row should also have a margin-left
* of 15 px. */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery img {
border: solid 1px #7CA3DD;
}
@@ -689,9 +503,6 @@ div#families table.attrlist td.ColumnType {
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
display: none; */
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsection : Narrative
----------------------------------------------------- */
@@ -755,7 +566,6 @@ a.familymap {
}
#footer > * {
background-color: #EAEEF4;
font-size: 80%;
}
#footer p#createdate {
float: left;
+1
View File
@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
Style Name: Web_Citations-Outline.css
******************************************************
# $Id$
Source Citations Outline styles
------------------------------------------------------ */
+1
View File
@@ -18,6 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
*************************************************
GRAMPS Cascading Style Sheet
+1
View File
@@ -18,6 +18,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
*************************************************
GRAMPS Cascading Style Sheet
+2
View File
@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
Style Name: Web_Navigation-Horizontal.css
******************************************************
# $Id$
Body Element
------------------------------------------------------ */
@@ -32,6 +33,7 @@ body {
background-color: #00029D;
color: #00029D;
width: 100%;
padding: 0px 14px;
}
/* Navigation Menus
+13 -223
View File
@@ -19,8 +19,6 @@ Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2011 Michiel D. Nauta
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -56,6 +54,7 @@ Middle images/Web_Mainz_Mid.png
Middle Light images/Web_Mainz_MidLight.png
----------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------
@@ -64,30 +63,19 @@ General Elements
-----------------------------------------------------------------*/
body {
font-family: Georgia, serif;
font-size: 100%;
font-size: 90%;
color: #7D5925;
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
}
body > div {
width: 85%;
width: 950px;
margin: 0px auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
overflow: hidden;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
padding: 0px 1.5em;
}
.content {
padding: 1.5em 1.5em;
overflow: auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
div.snapshot div.thumbnail {
text-align: center;
@@ -95,13 +83,6 @@ div.snapshot div.thumbnail {
div.snapshot a {
display: inline;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
/* General Text
-----------------------------------------------------------------*/
@@ -110,12 +91,6 @@ h1 {
font-style: italic;
margin-left: 2em;
}
h2 {
display:block;
margin:0;
padding:0;
text-align: center;
}
h3 {
font-size: xx-large;
font-weight: normal;
@@ -139,7 +114,6 @@ h4 {
a {
color: #7D5925;
text-decoration: none;
word-wrap: break-word;
}
a[href]:hover, a[href]:active {
background-color: #FFFFE7;
@@ -170,7 +144,7 @@ div#nav ul li, #subnavigation ul li {
float: left;
}
div#nav ul li a, #subnavigation ul li a {
display: run-in;
display: block;
padding: 0.4em 0.8em 0.3em 0.8em;
font-size: smaller;
font-family: sans-serif;
@@ -224,93 +198,6 @@ div#alphanav ul li a:hover {
color: white;
}
/* Responsive navigation */
a.navIcon {
display: none;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #D8C19F;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
-----------------------------------------------------------------*/
table {
@@ -420,10 +307,6 @@ table#SortByCount thead th.ColumnQuantity a:after {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
-----------------------------------------------------------------*/
#GalleryNav {
@@ -468,13 +351,6 @@ table.eventlist tbody tr td.ColumnSources {
margin: 0px auto;
display:block;
border: solid 1px #7D5925;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
/* Sources
@@ -490,7 +366,7 @@ div#SourceDetail {
padding-bottom: 0px;
margin: 0px;
}
#Contact #summaryarea #GalleryDisplay img {
#Contact img {
display: block;
margin: 0px auto 1em auto;
border: solid 1px #7D5925;
@@ -516,31 +392,16 @@ div#SourceDetail {
/* SubSection
-----------------------------------------------------------------*/
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin-left: 10px;
margin-right: 10px;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay {
#Home img, #Introduction img {
display: block;
margin: 1em auto;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay {
margin: 0 auto;
max-width: 100%;
}
}
#Home a, #Introduction a, #Contact a {
color: black;
}
.subsection {
clear: both;
overflow: hidden;
}
.subsection p {
margin: 0px;
@@ -557,43 +418,20 @@ div#families table.fixed_subtables table.eventlist th:first-child {
div#families table.fixed_subtables table.eventlist th:last-child {
width: 5em;
}
div#families .infolist h4 {
text-align: left;
}
/* SubSection : Gallery
-----------------------------------------------------------------*/
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery {
/* float container stretch, see www.quirksmode.org/css/clearing.html */
overflow: hidden;
}
#indivgallery .thumbnail {
float: left;
width: 130px;
max-width: 130px;
max-height: 150px;
font-size: smaller;
text-align: center;
margin: 0.5em;
background-color: white;
}
#indivgallery img {
border: solid 1px #7D5925;
@@ -602,43 +440,6 @@ div#families .infolist h4 {
/* ## remove this line and the comment markers from the line below to hide the description in Individual Gallery
display: none; */
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
div.snapshot div.thumbnail {
text-align: center;
}
/* SubSection : Narrative
-----------------------------------------------------------------*/
@@ -691,32 +492,20 @@ div.grampsstylednote p {
-----------------------------------------------------------------*/
#footer {
clear: both;
overflow: hidden;
width: 100%;
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
border-top: dashed 1px #7D5925;
font-family: sans-serif;
}
#footer p#createdate {
float: left;
width: 50%;
text-align: left;
margin-left: 10px;
}
#footer p#copyright {
float: right;
width: 40%;
text-align: right;
}
#footer p#copyright img {
float: right;
margin-right: 10px;
margin-bottom: 10px;
vertical-align: middle;
}
#footer > * {
font-size: 80%;
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
}
/* Overwritten
-----------------------------------------------------------------*/
@@ -735,6 +524,7 @@ div#map_canvas {
table.calendar {
table-layout: fixed;
empty-cells: show;
width: 950px;
margin: 0px auto;
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
}
+27 -220
View File
@@ -19,8 +19,6 @@ Go to <http://gramps-project.org/> to learn more!
Copyright 2008 Jason M. Simanek
Copyright 2009 Stephane Charette
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
Copyright 2018 Theo van Rijn
Copyright (C) 2019 Serge Noiraud
This file is part of the GRAMPS program.
@@ -47,6 +45,7 @@ gray #696969
green #5D835F
--------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------
@@ -84,21 +83,10 @@ img {
.thumbnail a:hover {
background:none;
}
#outerwrapper {
margin: 5px auto;
width: 98%;
}
#outerwrapper > div {
clear: both;
}
.content {
padding-top: 1cm;
background-color:#FFF;
}
#ThumbnailPreview div.snapshot {
float: right;
margin: 0;
}
.content div.snapshot {
float:right;
margin:1.6em;
@@ -113,12 +101,6 @@ img {
.content div.snapshot div.thumbnail span {
display:none;
}
/* Less whitespace on smaller real estate. */
@media only screen and (max-width: 1080px) {
.content {
padding: 0em 0.5em;
}
}
.fullclear {
width:100%;
height:1px;
@@ -133,7 +115,7 @@ h1 {
font:normal 2em/1.2em serif;
}
h2 {
display:block;
display:none;
}
h3 {
font:normal 2em/1.2em serif;
@@ -157,6 +139,7 @@ h5, h6 {
p#description {
color:#542;
max-width:800px;
margin:0;
padding:1em 20px;
background-color:#FFF;
@@ -273,100 +256,6 @@ div#subnavigation ul li.CurrentSection a {
border-width: 0 0 1px 0;
}
/* Responsive navigation */
a.navIcon {
display: none;
color: #FFF;
}
div#header::after {
content: "";
clear: both;
display: table;
}
div#nav::after {
content: "";
clear: both;
display: table;
}
@media only screen and (max-width: 1080px) {
/* Use less & all realestate on mobiles. */
div#outerwrapper {
margin: 5px auto;
width: 100%;
}
.nav {
background: none; /* Works in IE too. */
/*
width: 200px;
position: absolute;
z-index: 10;
*/
}
/* Undo some of the #nav styles - to enable the class .nav */
.nav ul, #subnavigation ul {
list-style: none;
min-width: unset;
width: 200px;
height: 32px;
margin: 0;
padding: 0;
}
.nav ul li, #subnavigation ul li {
float: unset;
display: unset
}
/* Start with hidden menu options */
/* .nav li:not(:first-child) {display: none;} */
.nav li {display: none;}
.nav ul {display: none;}
a.navIcon {
font-size:1.3em;
display: block;
margin: 0.1em 0.4em 0.4em 0.4em;
float: left;
color: #FFF;
}
.nav.responsive {position: absolute; display: block; z-index: 100;}
.nav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
margin-right: 10px;
}
.nav.responsive ::after {
/* need to remove the "|" when we are in the dropdown menu. */
color: #A97;
background-color: #A97;
}
.nav.responsive li {
/* float: left; */
display: block;
text-align: left;
background-color: #A97;
/* required by IE */
float: left;
clear: both;
width: 200px;
}
div#nav ul, #subnavigation ul {
padding-left: 0px;
}
.content {
padding: 0em 0.5em;
}
}
/* Main Table
----------------------------------------------------- */
table.infolist {
@@ -389,6 +278,7 @@ table.infolist tr th a:hover {
table.infolist tr td {
font:normal 1.1em/1.4em serif;
vertical-align:middle;
padding:.1em 10px;
}
table.infolist tr td a {
display:block;
@@ -508,30 +398,30 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
/* Individuals
----------------------------------------------------- */
#Individuals { }
#Individuals table.IndividualList {
#Individuals table.individuallist {
border-bottom:solid 1px #A97;
}
#Individuals table.IndividualList tbody tr td {
#Individuals table.individuallist tbody tr td {
border-bottom:dashed 1px #C1B398;
}
#Individuals table.IndividualList tbody tr td a:hover {
#Individuals table.individuallist tbody tr td a:hover {
text-decoration:none;
}
table.IndividualList tbody tr td.ColumnSurname a:hover, table.IndividualList tbody tr td.ColumnSurname a:active {
table.individuallist tbody tr td.ColumnSurname a:hover, table.individuallist tbody tr td.ColumnSurname a:active {
cursor:default;
color:black;
background:none;
}
table.IndividualList tbody tr td.ColumnName {
table.individuallist tbody tr td.ColumnName {
padding:0;
background-color:#FFF;
}
table.IndividualList tbody tr td.ColumnName a {
table.individuallist tbody tr td.ColumnName a {
display:block;
padding:.1em .1em;
padding:.6em 10px;
vertical-align:middle;
}
table.IndividualList tbody tr td.ColumnName a:hover {
table.individuallist tbody tr td.ColumnName a:hover {
background-color:#C1B398;
}
#Individuals div table.infolist tr td p {
@@ -689,10 +579,6 @@ table.relationships tbody tr td.ColumnPartner a:hover {
content: "";
}
table.eventlist tbody tr td.ColumnSources {
width: 5%;
}
/* Gallery
----------------------------------------------------- */
#Gallery { }
@@ -747,13 +633,6 @@ table.eventlist tbody tr td.ColumnSources {
}
#GalleryDisplay img {
margin:0 auto;
height: auto;
}
@media only screen and (max-width: 1600px) {
#GalleryDisplay img {
max-width: 100%;
}
}
#GalleryDetail div#summaryarea{
margin:0;
@@ -799,6 +678,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
/* Contact
----------------------------------------------------- */
#Contact #summaryarea {
width:500px;
margin:0 auto;
padding:3em;
background-color:#F1ECE2;
@@ -816,6 +696,7 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
padding:0;
}
#researcher span {
float:left;
display:block;
font:normal .9em/1.4em serif;
margin-right:.4em;
@@ -854,7 +735,7 @@ table.download {
width:100%;
}
table.download img {
float:none;
float:center;
}
table.download thead tr th {
text-align:center;
@@ -897,32 +778,20 @@ table.download td.Modified {
/* Subsections
----------------------------------------------------- */
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
float: right;
margin-left: 10px;
margin-right: 10px;
#Home, #Introduction, #Contact {
padding:2em 0 3em 0;
}
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
display: block;
max-width: 950px;
height: auto;
float: right;
}
@media only screen and (max-width: 1080px) {
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
#Contact #GalleryDisplay img {
max-width: 100%;
}
}
#Home p, #Introduction p {
margin:0 20px 1em 20px;
}
#Home img, #Introduction img {
float:right;
margin:0;
padding:0 20px 3em 2em;
}
#Home a, #Introduction a, #Contact a {
color: #000;
text-decoration: none;
overflow: hidden;
}
div.subsection{
padding-bottom:.5em;
@@ -1056,26 +925,6 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
/* Subsections : Gallery
----------------------------------------------------- */
#gallery {
background-color: green;
}
#indivgallery {
background-color: white;
}
#gallery .gallerycell {
float: left;
width: 130px;
height: 150px;
text-align: center;
margin: 0;
background-color: white;
border-top: solid 1px #999;
border-right: solid 1px #999;
}
#gallery .thumbnail {
font-size: smaller;
margin: 3em auto;
}
#indivgallery h4 {
margin-bottom:1em;
}
@@ -1083,49 +932,14 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0;
float:left;
width:130px;
height:150px;
text-align:center;
background-color: white;
}
#gallery div.indexno {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
margin: 0;
}
#indivgallery div.date {
float: right;
width: 1.8em;
font-size: large;
text-align: center;
background-color: #CCC;
color: #555;
}
#indivgallery .thumbnail ul {
font-size: smaller;
list-style: none;
padding: 0px;
}
#indivgallery .thumbnail ul li:first-child {
border-style: none;
}
#indivgallery .thumbnail ul li {
border-top: dashed 1px #CCC;
border-top-style: dashed;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#gallery img {
border: solid 1px #999;
}
#indivgallery .thumbnail a {
display:block;
margin:0;
padding:0;
background:none;
word-wrap: break-word;
}
#indivgallery .thumbnail a img {
margin:0;
@@ -1142,21 +956,17 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
margin:0 auto;
padding:0;
}
div.snapshot div.thumbnail {
text-align: center;
}
/* Subsections : Narrative
----------------------------------------------------- */
div.narrative {
padding-bottom:0;
}
i + div.grampsstylednote p {
margin: 0.1em 0 0.2em 0;
}
.narrative p {
margin: 0.1em 0 0.2em 0;
font:normal .9em/1.4em sans-serif;
margin-top:.5em;
margin-bottom:0;
padding:0 20px 1em 20px;
}
/* Subsections : References
@@ -1258,9 +1068,6 @@ div#pedigree {
background-color: #542;
border-top: solid 8px #A97;
}
#footer > * {
font-size: 80%;
}
#footer a, #footer a:visited {
text-decoration: none;
color: #C1B398;
@@ -1288,7 +1095,7 @@ div#pedigree {
margin-right: 10px;
}
#footer p#copyright img {
margin-right: 10px;
margin-right: 10px[
}
#user_footer {
width: 70%;
+1
View File
@@ -41,6 +41,7 @@ black #000
white #FFF
---------------------------------------------------------------------------------------------------
# $Id$
NarrativeWeb Styles
--------------------------------------------------------------------------------------------
+10 -8
View File
@@ -45,6 +45,7 @@ Unknown #000
Males Web_Gender_Male.png
Females Web_Gender_Female.png
# $Id$
NarrativeWeb Styles
-------------------------------------------------------------------------------------------- */
@@ -155,6 +156,7 @@ h5, h6 {
margin:1.3em 0 .5em 1em;
}
p#description {
max-width:800px;
margin:0;
padding:1em 20px;
}
@@ -454,30 +456,30 @@ div#Individuals {
margin: 0;
padding: 0;
}
div#Individuals table.IndividualList {
div#Individuals table.individuallist {
border-bottom: solid 1px #5D835F;
}
div#Individuals table.IndividualList tbody tr td {
div#Individuals table.individuallist tbody tr td {
border-bottom: dashed 1px #5D835F;
background-color: #D8F3D6;
}
div#Individuals table.IndividualList tbody tr td a {
div#Individuals table.individuallist tbody tr td a {
display: block;
padding: .6em 10px;
}
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
cursor:default;
color: #000;
background:none;
}
div#Individuals table.IndividualList tbody tr td.ColumnName {
div#Individuals table.individuallist tbody tr td.ColumnName {
background-color: #FFF;
}
div#Individuals table.IndividualList tbody tr td.ColumnName a {
div#Individuals table.individuallist tbody tr td.ColumnName a {
vertical-align:middle;
}
div#Individuals table.IndividualList tbody tr td.ColumnPartner {
div#Individuals table.individuallist tbody tr td.ColumnPartner {
background-color: #FFF;
}
div#Individuals div table.infolist tr td p {
+41 -69
View File
@@ -9,7 +9,7 @@
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
@@ -20,10 +20,10 @@
#
# $Id: $
#
*******************************************************************************
**************************************************************************************************
GRAMPS Cascading Style Sheet
Style Name: Combined Ancestor Tree Style Sheet
*******************************************************************************
***************************************************************************************************
#
===== Ancestor Graph Color Scheme =====
Males #BCEAF6
@@ -33,8 +33,10 @@ Unknown #000
===== Web Graphics =====
Males Web_Gender_Male.png
Females Web_Gender_Female.png
# -------------------------------------------------------------------------- #
/* Subsections : Ancestors Tree -------------------------------------------- */
# ------------------------------------------------------------------------------------------------- */
/* Subsections : Ancestors Tree
----------------------------------------------------- */
#tree {
page-break-before:always;
margin:0;
@@ -43,15 +45,12 @@ Females Web_Gender_Female.png
}
#treeContainer {
position:relative;
display: table-cell;
vertical-align: middle;
overflow: visible;
z-index:1;
}
#treeContainer div.boxbg {
position:absolute;
margin:0px;
padding:0px;
margin:0;
padding:0;
background:none;
}
#treeContainer div.boxbg a,
@@ -59,43 +58,41 @@ Females Web_Gender_Female.png
position:relative;
z-index:10;
display:block;
font:normal 1.1em/1.4em sans-serif;
font:normal .7em/1.4em sans-serif;
text-align:center;
word-break:break-word;
word-wrap:break-word;
text-decoration:none;
color: #00029D;
width:280px;
min-height: 70px;
width:118px;
padding:5px 20px 7px 20px;
margin-left:16px;
border: solid 2px #000;
border-radius: 10px;
background-color: #FFF;
border: solid 1px #000;
}
#treeContainer div.boxbg a.noThumb,
#treeContainer div.AncCol4 a,
#treeContainer div.AncCol3 a,
#treeContainer div.AncCol4 a,
#treeContainer div.AncCol3 span.unlinked,
#treeContainer div.AncCol4 span.unlinked {
margin-top:10px;
float: right;
}
#treeContainer div.boxbg a:hover {
position:relative;
z-index:999;
font-size:1.3em;
word-break:break-word;
word-wrap:break-word;
font-size:1em;
text-decoration:none;
color: #00029D;
width:400px;
width:190px;
margin-left:-20px;
padding: 0px 0px 0px 40px;
padding:10px 25px 12px 25px;
border: solid 2px #000;
}
#treeContainer div.boxbg a:hover,
#treeContainer div.boxbg a:hover,
#treeContainer div.AncCol3 a:hover,
#treeContainer div.AncCol4 a:hover {
margin-top:-44px;
}
#treeContainer div.boxbg a.noThumb:hover {
margin-top:0;
padding-left: 10px;
}
#treeContainer div.AncCol0 a:hover {
margin-left:12px;
@@ -105,73 +102,48 @@ Females Web_Gender_Female.png
}
#treeContainer div.boxbg span.thumbnail {
display:block;
position: absolute;
max-width:85px;
max-height:75px;
left: 3px;
top: 3px;
max-width:80px;
max-height:65px;
margin:0 auto;
padding:4px 0;
}
#treeContainer div.boxbg a.thumbnail table td.img {
padding-right: 5px;
#treeContainer div.boxbg span.thumbnail img {
max-width:80px;
max-height:65px;
margin:0 auto;
}
#treeContainer div.boxbg a.thumbnail:hover table td.img {
padding-right: 9px;
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
height:80px;
}
#treeContainer div.boxbg a.thumbnail table td.name {
padding-top:3px;
padding-left: 2px;
padding-right: 23px;
width: 90%;
}
#treeContainer div.boxbg a.thumbnail img {
margin-left:0px;
padding-left: 0px;
border-radius: 5px;
}
#treeContainer div.boxbg a.thumbnail:hover img {
max-height:90%;
margin-left:5px;
position: absolute;
left: 0px;
top: 4px;
border-radius: 5px;
}
#treeContainer div.boxbg table td:first-child, table th:first-child {
padding-left: 5px;
padding-top: 5px;
}
#IndividualDetail div.subsection table tr td:first-child {
padding-left: 5px;
padding-top: 5px;
}
#treeContainer #treeContainer div.AncCol4 span.thumbnail {
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
display:none;
}
#treeContainer div.boxbg a:hover span.thumbnail {
display:block;
}
#treeContainer div.boxbg span.fullname {
display: none;
}
#treeContainer div.boxbg span.shortname {
display: inline;
}
#treeContainer div.boxbg a:hover span.fullname {
display: inline;
}
#treeContainer div.boxbg a:hover span.shortname {
display: none;
}
#treeContainer div.boxbg a:hover {
float: right;
margin-top: 10px;
border: solid 4px #000;
}
#treeContainer div.male a,
#treeContainer div.male span.unlinked {
background:url(../images/Web_Gender_Male.png) #BCEAF6 no-repeat top right;
}
#treeContainer div.female a,
#treeContainer div.female a,
#treeContainer div.female span.unlinked {
background:url(../images/Web_Gender_Female.png) #FFC0CB no-repeat top right;
}
+1
View File
@@ -29,6 +29,7 @@ Style Author: Stephane Charette and Jason Simanek
Image Gallery
-------------
# $Id$
ensure RegionBox <ol> is hidden and has no margins/padding that would shift the image */
ol.RegionBox {
+4 -7
View File
@@ -18,11 +18,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# $Id$
#
###################################################### */
body#FamilyMap {
background-color: #000;
padding: 0 14px;
width: 965px;
}
/* Family Maps
@@ -31,11 +33,8 @@ body#FamilyMap {
margin-left: 10px;
margin-right: 10px;
border: solid 4px #000;
margin: 0px auto;
width: 800px;
height: 400px;
max-width: 90%;
max-height: 90%;
width: 931px;
height: 1000px;
}
/* Place Maps
@@ -45,8 +44,6 @@ div#place_canvas {
border: solid 4px #000;
width: 500px;
height: 400px;
max-width: 90%;
max-height: 90%;
}
button#drop {
background-color: purple;

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

+17 -42
View File
@@ -1,43 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.gramps.gramps</id>
<metadata_license>CC0-1.0</metadata_license>
<name>Gramps</name>
<summary>Genealogical research program</summary>
<description>
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
</description>
<launchable type="desktop-id">gramps.desktop</launchable>
<url type="homepage">https://gramps-project.org/</url>
<url type="bugtracker">https://gramps-project.org/bugs/</url>
<url type="help">https://gramps-project.org/wiki/index.php?title=Main_page</url>
<project_license>GPL-2.0+</project_license>
<developer_name>Gramps Development Team</developer_name>
<screenshots>
<screenshot>
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/5/5f/AppData1.png</image>
</screenshot>
<screenshot>
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/6/68/AppData2.png</image>
</screenshot>
<screenshot type="default">
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/e/e9/AppData3.png</image>
</screenshot>
<screenshot>
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/6/68/AppData4.png</image>
</screenshot>
<screenshot>
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/5/50/AppData5.png</image>
</screenshot>
</screenshots>
<provides>
<binary>gramps</binary>
</provides>
</component>
<application>
<id type="desktop">gramps.desktop</id>
<licence>CC0</licence>
<description>
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
</description>
<url type="homepage">http://gramps-project.org/</url>
<screenshots>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
</screenshots>
</application>
+1
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id$ -->
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-gramps">
+1
View File
@@ -19,6 +19,7 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
$Id$
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+11 -19
View File
@@ -21,18 +21,19 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# $Id$
-->
<!--
This is the Document Type Definition file for v1.7.1
This is the Document Type Definition file for v1.6.0
of the GRAMPS XML genealogy data format.
Please use the following formal public identifier to identify it:
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
For example:
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
[...]>
-->
@@ -61,7 +62,7 @@ DATABASE
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
citations?, sources?, places?, objects?, repositories?,
notes?, bookmarks?, namemaps?)>
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
<!-- ************************************************************
@@ -121,7 +122,6 @@ GENDER has values of M, F, or U.
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
<!ATTLIST name
alt (0|1) #IMPLIED
type CDATA #IMPLIED
@@ -138,8 +138,6 @@ GENDER has values of M, F, or U.
<!ELEMENT familynick (#PCDATA)>
<!ELEMENT group (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
<!ATTLIST surname
prefix CDATA #IMPLIED
prim (1|0) #IMPLIED
@@ -198,13 +196,12 @@ FAMILY
<!ELEMENT mother EMPTY>
<!ATTLIST mother hlink IDREF #REQUIRED>
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
<!ELEMENT childref (citationref*,noteref*)>
<!ATTLIST childref
hlink IDREF #REQUIRED
priv (0|1) #IMPLIED
mrel CDATA #IMPLIED
frel CDATA #IMPLIED
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
>
<!ELEMENT type (#PCDATA)>
@@ -251,25 +248,20 @@ PLACES
<!ELEMENT places (placeobj)*>
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
objref*, url*, noteref*, citationref*, tagref*)>
<!ATTLIST placeobj
id CDATA #IMPLIED
handle ID #REQUIRED
priv (0|1) #IMPLIED
change CDATA #REQUIRED
name CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
<!ATTLIST pname
lang CDATA #IMPLIED
value CDATA #REQUIRED
>
<!ELEMENT ptitle (#PCDATA)>
<!ELEMENT code (#PCDATA)>
<!ELEMENT alt_name (#PCDATA)>
<!ELEMENT coord EMPTY>
<!ATTLIST coord
+35 -14
View File
@@ -25,13 +25,13 @@
-->
<!--
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
This is the RELAX NG schema for the Gramps XML genealogy data format.
-->
<grammar
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://gramps-project.org/xml/1.7.1/"
ns="http://gramps-project.org/xml/1.6.0/"
xmlns="http://relaxng.org/ns/structure/1.0">
<start><element name="database">
@@ -210,7 +210,16 @@
</define>
<define name="child-rel">
<text/>
<choice>
<value>Birth</value>
<value>Adopted</value>
<value>Stepchild</value>
<value>Sponsored</value>
<value>Foster</value>
<value>None</value>
<value>Other</value>
<value>Unknown</value>
</choice>
</define>
<define name="name-content">
@@ -221,7 +230,13 @@
<optional><attribute name="priv">
<ref name="priv-content"/>
</attribute></optional>
<optional><attribute name="type"><text/></attribute></optional>
<optional><attribute name="type"><choice>
<value>Unknown</value>
<value>Also Known As</value>
<value>Birth Name</value>
<value>Married Name</value>
<value>Other Name</value>
</choice></attribute></optional>
<optional><attribute name="sort"><text/></attribute></optional>
<optional><attribute name="display"><text/></attribute></optional>
<optional><element name="first"><text/></element></optional>
@@ -250,7 +265,20 @@
<value>1</value>
<value>0</value>
</choice></attribute></optional>
<optional><attribute name="derivation"><text/></attribute></optional>
<optional><attribute name="derivation"><choice>
<value>Unknown</value>
<value>Inherited</value>
<value>Given</value>
<value>Taken</value>
<value>Patronymic</value>
<value>Matronymic</value>
<value>Feudal</value>
<value>Pseudonym</value>
<value>Patrilineal</value>
<value>Matrilineal</value>
<value>Occupation</value>
<value>Location</value>
</choice></attribute></optional>
<optional><attribute name="connector"><text/></attribute></optional>
</define>
@@ -451,12 +479,11 @@
<define name="place-content">
<ref name="primary-object"/>
<attribute name="name"><text/></attribute>
<attribute name="type"><text/></attribute>
<optional><element name="ptitle"><text/></element></optional>
<oneOrMore><element name="pname">
<ref name="placename-content"/>
</element></oneOrMore>
<optional><element name="code"><text/></element></optional>
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
<optional><element name="coord">
<attribute name="long"><text/></attribute>
<attribute name="lat"><text/></attribute>
@@ -745,12 +772,6 @@
<text/>
</define>
<define name="placename-content">
<attribute name="value"><text/></attribute>
<optional><attribute name="lang"><text/></attribute></optional>
<optional><ref name="date-content"/></optional>
</define>
<define name="placeref-content">
<attribute name="hlink"><data type="IDREF"/></attribute>
<optional><ref name="date-content"/></optional>
File diff suppressed because one or more lines are too long
+9266
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+859
View File
@@ -0,0 +1,859 @@
/*!
* jQuery FlexBox $Version: 0.9.6 $
*
* Copyright (c) 2008-2010 Noah Heldman and Fairway Technologies (http://www.fairwaytech.com/flexbox)
* Licensed under Ms-PL (http://www.codeplex.com/flexbox/license)
*
* $Date: 2010-11-24 01:02:00 PM $
* $Rev: 0.9.6.1 $
*/
(function($) {
$.flexbox = function(div, o) {
// TODO: in straight type-ahead mode (showResults: false), if noMatchingResults, dropdown appears after new match
// TODO: consider having options.mode (select, which replaces html select; combobox; suggest; others?)
// TODO: on resize (at least when wrapping within a table), the arrow is pushed down to the next line
// TODO: check for boundary/value problems (such as minChars of -1) and alert them
// TODO: add options for advanced paging template
// TODO: general cleanup and refactoring, commenting
// TODO: detailed Exception handling, logging
// TODO: FF2, up arrow from bottom has erratic scroll behavior (if multiple flexboxes on page)
// TODO: FF2 (and maybe IE7): if maxVisibleRows == number of returned rows, height is a bit off (maybe set to auto?)
// TODO: escape key only works from input box (this might be okay)
// TODO: make .getJSON parameters (object and callback function) configurable (e.g. when calling yahoo image search)
// TODO: escape key reverts to previous value (FF only?) (is this a good thing?)
// TEST: highlightMatches uses the case of whatever you typed in to replace the match string, which can look funny
// TEST: handle pageDown and pageUp keys when scrolling through results
// TEST: allow client-side paging (return all data initially, set paging:{pageSize:#}, and ensure maxCacheBytes is > 0)
// TEST: accept json object as first parameter to flexbox instead of page source, and have it work like a combobox
// TEST: implement no results template
// TEST: implement noResultsText and class
// TEST: watermark color should be configurable (and so should default input color)
// TEST: exception handling and alerts for common mistakes
// TEST: first example should use defaults ONLY
// TEST: add property initialValue, so you can set it when the flexbox loads
// TEST: handle hidden input value for form submissions
// TEST: how can we allow programmatically setting the field value (and therefore hidden value). add jquery function?
// TEST: use pageSize parameter as threshold to switch from no paging to paging based on results
// TEST: if you type in an input value that matches the html, it might display html code (try typing "class" in the input box)
// TEST: don't require all paging subprops (let default override)
// TEST: when tabbing from one ffb to another, the previous ffb results flash...
// TEST: IE7: when two non-paging ffbs right after each other, with only a clear-both div between them, the bottom ffb jumps down when selecting a value, then jumps back up on mouseover
// TEST: FF2, make sure we scroll to top before showing results (maxVisibleRows only)
// TEST: if maxVisibleRows is hiding the value the user types in to the input, scroll to that value (is this even possible?)
// TEST: make sure caching supports multiple ffbs uniquely
// TEST: when entering a number in the paging input box, the results are displayed twice
var timeout = false, // hold timeout ID for suggestion results to appear
cache = [], // simple array with cacheData key values, MRU is the first element
cacheData = [], // associative array holding actual cached data
cacheSize = 0, // size of cache in bytes (cache up to o.maxCacheBytes bytes)
delim = '\u25CA', // use an obscure unicode character (lozenge) as the cache key delimiter
scrolling = false,
pageSize = o.paging && o.paging.pageSize ? o.paging.pageSize : 0,
retrievingRemoteData = false,
$div = $(div).css('position', 'relative').css('z-index', 0);
// The hiddenField MUST be appended to the div before the input, or IE7 does not shift the dropdown below the input field (it overlaps)
var $hdn = $('<input type="hidden"/>')
.attr('id', $div.attr('id') + '_hidden')
.attr('name', $div.attr('id'))
.val(o.initialId)
.appendTo($div);
var $input = $('<input/>')
.attr('id', $div.attr('id') + '_input')
.attr('autocomplete', 'off')
.addClass(o.inputClass)
.css('width', o.width + 'px')
.appendTo($div)
.click(function(e) {
if (o.watermark !== '' && this.value === o.watermark)
this.value = '';
else
this.select();
})
.focus(function(e) {
$(this).removeClass('watermark');
})
.blur(function(e) {
if (this.value === '') $hdn.val('');
setTimeout(function() { if (!$input.data('active')) hideResults(); }, 200);
})
.keydown(processKeyDown);
if (o.initialValue !== '')
$input.val(o.initialValue).removeClass('watermark');
else
$input.val(o.watermark).addClass('watermark');
var arrowWidth = 0;
if (o.showArrow && o.showResults) {
var arrowClick = function() {
if ($ctr.is(':visible')) {
hideResults();
}
else {
$input.focus();
if (o.watermark !== '' && $input.val() === o.watermark)
$input.val('');
else
$input.select();
if (timeout)
clearTimeout(timeout);
timeout = setTimeout(function() { flexbox(1, true, o.arrowQuery); }, o.queryDelay);
}
};
var $arrow = $('<span></span>')
.attr('id', $div.attr('id') + '_arrow')
.addClass(o.arrowClass)
.addClass('out')
.hover(function() {
$(this).removeClass('out').addClass('over');
}, function() {
$(this).removeClass('over').addClass('out');
})
.mousedown(function() {
$(this).removeClass('over').addClass('active');
})
.mouseup(function() {
$(this).removeClass('active').addClass('over');
})
.click(arrowClick)
.appendTo($div);
arrowWidth = $arrow.width();
$input.css('width', (o.width - arrowWidth) + 'px');
}
if (!o.allowInput) { o.selectFirstMatch = false; $input.click(arrowClick); } // simulate <select> behavior
// Handle presence of CSS Universal Selector (*) that defines padding by verifying what the browser thinks the outerHeight is.
// In FF, the outerHeight() will not pick up the correct input field padding
var inputPad = $input.outerHeight() - $input.height() - 2;
var inputWidth = $input.outerWidth() - 2;
var top = $input.outerHeight();
if (inputPad === 0) {
inputWidth += 4;
top += 4;
}
else if (inputPad !== 4) {
inputWidth += inputPad;
top += inputPad;
}
var $ctr = $('<div></div>')
.attr('id', $div.attr('id') + '_ctr')
.css('width', inputWidth + arrowWidth)
.css('top', top)
.css('left', 0)
.addClass(o.containerClass)
.appendTo($div)
.mousedown(function(e) {
$input.data('active', true);
})
.hide();
var $content = $('<div></div>')
.addClass(o.contentClass)
.appendTo($ctr)
.scroll(function() {
scrolling = true;
});
var $paging = $('<div></div>').appendTo($ctr);
$div.css('height', $input.outerHeight());
function processKeyDown(e) {
// handle modifiers
var mod = 0;
if (typeof (e.ctrlKey) !== 'undefined') {
if (e.ctrlKey) mod |= 1;
if (e.shiftKey) mod |= 2;
} else {
if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
}
// if the keyCode is one of the modifiers, bail out (we'll catch it on the next keypress)
if (/16$|17$/.test(e.keyCode)) return; // 16 = Shift, 17 = Ctrl
var tab = e.keyCode === 9, esc = e.keyCode === 27;
var tabWithModifiers = e.keyCode === 9 && mod > 0;
var backspace = e.keyCode === 8; // we will end up extending the delay time for backspaces...
// tab is a special case, since we want to bubble events...
if (tab) if (getCurr()) selectCurr();
// handling up/down/escape/right arrow/left arrow requires results to be visible
// handling enter requires that AND a result to be selected
if ((/27$|38$|33$|34$/.test(e.keyCode) && $ctr.is(':visible')) ||
(/13$|40$/.test(e.keyCode)) || !o.allowInput) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
switch (e.keyCode) {
case 38: // up arrow
prevResult();
break;
case 40: // down arrow
if ($ctr.is(':visible')) nextResult();
else flexboxDelay(true);
break;
case 13: // enter
if (getCurr()) selectCurr();
else flexboxDelay(true);
break;
case 27: // escape
hideResults();
break;
case 34: // page down
if (!retrievingRemoteData) {
if (o.paging) $('#' + $div.attr('id') + 'n').click();
else nextPage();
}
break;
case 33: // page up
if (!retrievingRemoteData) {
if (o.paging) $('#' + $div.attr('id') + 'p').click();
else prevPage();
}
break;
default:
if (!o.allowInput) { return; }
}
} else if (!esc && !tab && !tabWithModifiers) { // skip esc and tab key and any modifiers
flexboxDelay(false, backspace);
}
}
function flexboxDelay(simulateArrowClick, increaseDelay) {
if (timeout) clearTimeout(timeout);
var delay = increaseDelay ? o.queryDelay * 5 : o.queryDelay;
timeout = setTimeout(function() { flexbox(1, simulateArrowClick, ''); }, delay);
}
function flexbox(p, arrowOrPagingClicked, prevQuery) {
if (arrowOrPagingClicked) prevQuery = '';
var q = prevQuery && prevQuery.length > 0 ? prevQuery : $.trim($input.val());
if (q.length >= o.minChars || arrowOrPagingClicked) {
// If we are getting data from the server, set the height of the content box so it doesn't shrink when navigating between pages, due to the $content.html('') below...
if ($content.outerHeight() > 0)
$content.css('height', $content.outerHeight());
$content.html('').attr('scrollTop', 0);
var cached = checkCache(q, p);
if (cached) {
$content.css('height', 'auto');
displayItems(cached.data, q);
showPaging(p, cached.t);
}
else {
var params = { q: q, p: p, s: pageSize, contentType: 'application/json; charset=utf-8' };
var callback = function(data, overrideQuery) {
if (overrideQuery === true) q = overrideQuery; // must compare to boolean because by default, the string value "success" is passed when the jQuery $.getJSON method's callback is called
var totalResults = parseInt(data[o.totalProperty]);
// Handle client-side paging, if any paging configuration options were specified
if (isNaN(totalResults) && o.paging) {
if (o.maxCacheBytes <= 0) alert('The "maxCacheBytes" configuration option must be greater\nthan zero when implementing client-side paging.');
totalResults = data[o.resultsProperty].length;
var pages = totalResults / pageSize;
if (totalResults % pageSize > 0) pages = parseInt(++pages);
for (var i = 1; i <= pages; i++) {
var pageData = {};
pageData[o.totalProperty] = totalResults;
pageData[o.resultsProperty] = data[o.resultsProperty].splice(0, pageSize);
if (i === 1) totalSize = displayItems(pageData, q);
updateCache(q, i, pageSize, totalResults, pageData, totalSize);
}
}
else {
var totalSize = displayItems(data, q);
updateCache(q, p, pageSize, totalResults, data, totalSize);
}
showPaging(p, totalResults);
$content.css('height', 'auto');
retrievingRemoteData = false;
};
if (typeof (o.source) === 'object') {
if (o.allowInput) callback(filter(o.source, params));
else callback(o.source);
}
else {
retrievingRemoteData = true;
if (o.method.toUpperCase() == 'POST') $.post(o.source, params, callback, 'json');
else $.getJSON(o.source, params, callback);
}
}
} else
hideResults();
}
function filter(data, params) {
var filtered = {};
filtered[o.resultsProperty] = [];
filtered[o.totalProperty] = 0;
var index = 0;
for (var i=0; i < data[o.resultsProperty].length; i++) {
var indexOfMatch = data[o.resultsProperty][i][o.displayValue].toLowerCase().indexOf(params.q.toLowerCase());
if ((o.matchAny && indexOfMatch !== -1) || (!o.matchAny && indexOfMatch === 0)) {
filtered[o.resultsProperty][index++] = data[o.resultsProperty][i];
filtered[o.totalProperty] += 1;
}
}
if (o.paging) {
var start = (params.p - 1) * params.s;
var howMany = (start + params.s) > filtered[o.totalProperty] ? filtered[o.totalProperty] - start : params.s;
filtered[o.resultsProperty] = filtered[o.resultsProperty].splice(start, howMany);
}
return filtered;
}
function showPaging(p, totalResults) {
$paging.html('').removeClass(o.paging.cssClass); // clear out for threshold scenarios
if (o.showResults && o.paging && totalResults > pageSize) {
var pages = totalResults / pageSize;
if (totalResults % pageSize > 0) pages = parseInt(++pages);
outputPagingLinks(pages, p, totalResults);
}
}
function handleKeyPress(e, page, totalPages) {
if (/^13$|^39$|^37$/.test(e.keyCode)) {
if (e.preventDefault)
e.preventDefault();
if (e.stopPropagation)
e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
switch (e.keyCode) {
case 13: // Enter
if (/^\d+$/.test(page) && page > 0 && page <= totalPages)
flexbox(page, true);
else
alert('Please enter a page number between 1 and ' + totalPages);
// TODO: make this alert a function call, and a customizable parameter
break;
case 39: // right arrow
$('#' + $div.attr('id') + 'n').click();
break;
case 37: // left arrow
$('#' + $div.attr('id') + 'p').click();
break;
}
}
}
function handlePagingClick(e) {
flexbox(parseInt($(this).attr('page')), true, $input.attr('pq')); // pq == previous query
return false;
}
function outputPagingLinks(totalPages, currentPage, totalResults) {
// TODO: make these configurable images
var first = '&lt;&lt;',
prev = '&lt;',
next = '&gt;',
last = '&gt;&gt;',
more = '...';
$paging.addClass(o.paging.cssClass);
// set up our base page link element
var $link = $('<a/>')
.attr('href', '#')
.addClass('page')
.click(handlePagingClick),
$span = $('<span></span>').addClass('page'),
divId = $div.attr('id');
// show first page
if (currentPage > 1) {
$link.clone(true).attr('id', divId + 'f').attr('page', 1).html(first).appendTo($paging);
$link.clone(true).attr('id', divId + 'p').attr('page', currentPage - 1).html(prev).appendTo($paging);
}
else {
$span.clone(true).html(first).appendTo($paging);
$span.clone(true).html(prev).appendTo($paging);
}
if (o.paging.style === 'links') {
var maxPageLinks = o.paging.maxPageLinks;
// show page numbers
if (totalPages <= maxPageLinks) {
for (var i = 1; i <= totalPages; i++) {
if (i === currentPage) {
$span.clone(true).html(currentPage).appendTo($paging);
}
else {
$link.clone(true).attr('page', i).html(i).appendTo($paging);
}
}
}
else {
if ((currentPage + parseInt(maxPageLinks / 2)) > totalPages) {
startPage = totalPages - maxPageLinks + 1;
}
else {
startPage = currentPage - parseInt(maxPageLinks / 2);
}
if (startPage > 1) {
$link.clone(true).attr('page', startPage - 1).html(more).appendTo($paging);
}
else {
startPage = 1;
}
for (var i = startPage; i < startPage + maxPageLinks; i++) {
if (i === currentPage) {
$span.clone(true).html(i).appendTo($paging);
}
else {
$link.clone(true).attr('page', i).html(i).appendTo($paging);
}
}
if (totalPages > (startPage + maxPageLinks)) {
$link.clone(true).attr('page', i).html(more).appendTo($paging);
}
}
}
else if (o.paging.style === 'input') {
var $pagingBox = $('<input/>')
.addClass('box')
.click(function(e) {
this.select();
})
.keypress(function(e) {
return handleKeyPress(e, this.value, totalPages);
})
.val(currentPage)
.appendTo($paging);
}
if (currentPage < totalPages) {
$link.clone(true).attr('id', divId + 'n').attr('page', +currentPage + 1).html(next).appendTo($paging);
$link.clone(true).attr('id', divId + 'l').attr('page', totalPages).html(last).appendTo($paging);
}
else {
$span.clone(true).html(next).appendTo($paging);
$span.clone(true).html(last).appendTo($paging);
}
var startingResult = (currentPage - 1) * pageSize + 1;
var endingResult = (startingResult > (totalResults - pageSize)) ? totalResults : startingResult + pageSize - 1;
if (o.paging.showSummary) {
var summaryData = {
"start": startingResult,
"end": endingResult,
"total": totalResults,
"page": currentPage,
"pages": totalPages
};
var html = o.paging.summaryTemplate.applyTemplate(summaryData);
$('<br/>').appendTo($paging);
$('<span></span>')
.addClass(o.paging.summaryClass)
.html(html)
.appendTo($paging);
}
}
function checkCache(q, p) {
var key = q + delim + p; // use null character as delimiter
if (cacheData[key]) {
for (var i = 0; i < cache.length; i++) { // TODO: is it possible to not loop here?
if (cache[i] === key) {
// pull out the matching element (splice), and add it to the beginning of the array (unshift)
cache.unshift(cache.splice(i, 1)[0]);
return cacheData[key];
}
}
}
return false;
}
function updateCache(q, p, s, t, data, size) {
if (o.maxCacheBytes > 0) {
while (cache.length && (cacheSize + size > o.maxCacheBytes)) {
var cached = cache.pop();
cacheSize -= cached.size;
}
var key = q + delim + p; // use null character as delimiter
cacheData[key] = {
q: q,
p: p,
s: s,
t: t,
size: size,
data: data
}; // add the data to the cache at the hash key location
cache.push(key); // add the key to the MRU list
cacheSize += size;
}
}
function displayItems(d, q) {
var totalSize = 0, itemCount = 0;
if (!d)
return;
$hdn.val($input.val());
if (parseInt(d[o.totalProperty]) === 0 && o.noResultsText && o.noResultsText.length > 0) {
$content.addClass(o.noResultsClass).html(o.noResultsText);
$ctr.show();
return;
} else $content.removeClass(o.noResultsClass);
for (var i = 0; i < d[o.resultsProperty].length; i++) {
var data = d[o.resultsProperty][i],
result = o.resultTemplate.applyTemplate(data),
exactMatch = q === result,
selectedMatch = false,
hasHtmlTags = false,
match = data[o.displayValue];
if (!exactMatch && o.highlightMatches && q !== '') {
var pattern = q,
highlightStart = match.toLowerCase().indexOf(q.toLowerCase()),
replaceString = '<span class="' + o.matchClass + '">' + match.substr(highlightStart,q.length) + '</span>';
if (result.match('<(.|\n)*?>')) { // see if the content contains html tags
hasHtmlTags = true;
pattern = '(>)([^<]*?)(' + q + ')((.|\n)*?)(<)'; // TODO: look for a better way
replaceString = '$1$2<span class="' + o.matchClass + '">$3</span>$4$6';
}
result = result.replace(new RegExp(pattern.replace("[", "\\["), o.highlightMatchesRegExModifier), replaceString);
}
// write the value of the first match to the input box, and select the remainder,
// but only if autoCompleteFirstMatch is set, and there are no html tags in the response
if (o.autoCompleteFirstMatch && !hasHtmlTags && i === 0) {
if (q.length > 0 && match.toLowerCase().indexOf(q.toLowerCase()) === 0) {
$input.attr('pq', q); // pq == previous query
$hdn.val(data[o.hiddenValue]);
$input.val(data[o.displayValue]);
selectedMatch = selectRange(q.length, $input.val().length);
}
}
if (!o.showResults) return;
$row = $('<div></div>')
.attr('id', data[o.hiddenValue])
.attr('val', data[o.displayValue])
.addClass('row')
.html(result)
.appendTo($content);
if (exactMatch || (++itemCount == 1 && o.selectFirstMatch) || selectedMatch) {
$row.addClass(o.selectClass);
}
totalSize += result.length;
}
if (totalSize === 0) {
hideResults();
return;
}
$ctr.parent().css('z-index', 11000);
$ctr.show();
$content
.children('div')
.mouseover(function() {
$content.children('div').removeClass(o.selectClass);
$(this).addClass(o.selectClass);
})
.mouseup(function(e) {
e.preventDefault();
e.stopPropagation();
selectCurr();
});
if (o.maxVisibleRows > 0) {
var maxHeight = $row.outerHeight() * o.maxVisibleRows;
$content.css('max-height', maxHeight);
}
return totalSize;
}
function selectRange(s, l) {
var tb = $input[0];
if (tb.createTextRange) {
var r = tb.createTextRange();
r.moveStart('character', s);
r.moveEnd('character', l - tb.value.length);
r.select();
} else if (tb.setSelectionRange) {
tb.setSelectionRange(s, l);
}
tb.focus();
return true;
}
String.prototype.applyTemplate = function(d) {
try {
if (d === '') return this;
return this.replace(/{([^{}]*)}/g,
function(a, b) {
var r;
if (b.indexOf('.') !== -1) { // handle dot notation in {}, such as {Thumbnail.Url}
var ary = b.split('.');
var obj = d;
for (var i = 0; i < ary.length; i++)
obj = obj[ary[i]];
r = obj;
}
else
r = d[b];
if (typeof r === 'string' || typeof r === 'number') return r; else throw (a);
}
);
} catch (ex) {
alert('Invalid JSON property ' + ex + ' found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.');
}
};
function hideResults() {
$input.data('active', false); // for input blur
$div.css('z-index', 0);
$ctr.hide();
}
function getCurr() {
if (!$ctr.is(':visible'))
return false;
var $curr = $content.children('div.' + o.selectClass);
if (!$curr.length)
$curr = false;
return $curr;
}
function selectCurr() {
$curr = getCurr();
if ($curr) {
$hdn.val($curr.attr('id'));
$input.val($curr.attr('val')).focus();
hideResults();
if (o.onSelect) {
o.onSelect.apply($input[0]);
}
}
}
function supportsGetBoxObjectFor() {
try {
document.getBoxObjectFor(document.body);
return true;
}
catch (e) {
return false;
}
}
function supportsGetBoundingClientRect() {
try {
document.body.getBoundingClientRect();
return true;
}
catch (e) {
return false;
}
}
function nextPage() {
$curr = getCurr();
if ($curr && $curr.next().length > 0) {
$curr.removeClass(o.selectClass);
for (var i = 0; i < o.maxVisibleRows; i++) {
if ($curr.next().length > 0) {
$curr = $curr.next();
}
}
$curr.addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop');
$content.attr('scrollTop', scrollPos + $content.height());
}
else if (!$curr)
$content.children('div:first-child').addClass(o.selectClass);
}
function prevPage() {
$curr = getCurr();
if ($curr && $curr.prev().length > 0) {
$curr.removeClass(o.selectClass);
for (var i = 0; i < o.maxVisibleRows; i++) {
if ($curr.prev().length > 0) {
$curr = $curr.prev();
}
}
$curr.addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop');
$content.attr('scrollTop', scrollPos - $content.height());
}
else if (!$curr)
$content.children('div:last-child').addClass(o.selectClass);
}
function nextResult() {
$curr = getCurr();
if ($curr && $curr.next().length > 0) {
$curr.removeClass(o.selectClass).next().addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop'),
curr = $curr[0], parentBottom, bottom, height;
if (supportsGetBoxObjectFor()) {
parentBottom = document.getBoxObjectFor($content[0]).y + $content.attr('offsetHeight');
bottom = document.getBoxObjectFor(curr).y + $curr.attr('offsetHeight');
height = document.getBoxObjectFor(curr).height;
}
else if (supportsGetBoundingClientRect()) {
parentBottom = $content[0].getBoundingClientRect().bottom;
var rect = curr.getBoundingClientRect();
bottom = rect.bottom;
height = bottom - rect.top;
}
if (bottom >= parentBottom)
$content.attr('scrollTop', scrollPos + height);
}
else if (!$curr)
$content.children('div:first-child').addClass(o.selectClass);
}
function prevResult() {
$curr = getCurr();
if ($curr && $curr.prev().length > 0) {
$curr.removeClass(o.selectClass).prev().addClass(o.selectClass);
var scrollPos = $content.attr('scrollTop'),
curr = $curr[0],
parent = $curr.parent()[0],
parentTop, top, height;
if (supportsGetBoxObjectFor()) {
height = document.getBoxObjectFor(curr).height;
parentTop = document.getBoxObjectFor($content[0]).y - (height * 2); // TODO: this is not working when i add another control...
top = document.getBoxObjectFor(curr).y - document.getBoxObjectFor($content[0]).y;
}
else if (supportsGetBoundingClientRect()) {
parentTop = parent.getBoundingClientRect().top;
var rect = curr.getBoundingClientRect();
top = rect.top;
height = rect.bottom - top;
}
if (top <= parentTop)
$content.attr('scrollTop', scrollPos - height);
}
else if (!$curr)
$content.children('div:last-child').addClass(o.selectClass);
}
};
$.fn.flexbox = function(source, options) {
if (!source)
return;
try {
var defaults = $.fn.flexbox.defaults;
var o = $.extend({}, defaults, options);
for (var prop in o) {
if (defaults[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
}
o.source = source;
if (options) {
o.paging = (options.paging || options.paging == null) ? $.extend({}, defaults.paging, options.paging) : false;
for (var prop in o.paging) {
if (defaults.paging[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
}
if (options.displayValue && !options.hiddenValue) {
o.hiddenValue = options.displayValue;
}
}
this.each(function() {
new $.flexbox(this, o);
});
return this;
} catch (ex) {
if (typeof ex === 'object') alert(ex.message); else alert(ex);
}
};
// plugin defaults - added as a property on our plugin function so they can be set independently
$.fn.flexbox.defaults = {
method: 'GET', // One of 'GET' or 'POST'
queryDelay: 100, // num of milliseconds before query is run.
allowInput: true, // set to false to disallow the user from typing in queries
containerClass: 'ffb',
contentClass: 'content',
selectClass: 'ffb-sel',
inputClass: 'ffb-input',
arrowClass: 'ffb-arrow',
matchClass: 'ffb-match',
noResultsText: 'No matching results', // text to show when no results match the query
noResultsClass: 'ffb-no-results', // class to apply to noResultsText
showResults: true, // whether to show results at all, or just typeahead
selectFirstMatch: true, // whether to highlight the first matching value
autoCompleteFirstMatch: false, // whether to complete the first matching value in the input box
highlightMatches: true, // whether all matches within the string should be highlighted with matchClass
highlightMatchesRegExModifier: 'i', // 'i' for case-insensitive, 'g' for global (all occurrences), or combine
matchAny: true, // for client-side filtering ONLY, match any occurrence of the search term in the result (e.g. "ar" would find "area" and "cart")
minChars: 1, // the minimum number of characters the user must enter before a search is executed
showArrow: true, // set to false to simulate google suggest
arrowQuery: '', // the query to run when the arrow is clicked
onSelect: false, // function to run when a result is selected
maxCacheBytes: 32768, // in bytes, 0 means caching is disabled
resultTemplate: '{name}', // html template for each row (put json properties in curly braces)
displayValue: 'name', // json element whose value is displayed on select
hiddenValue: 'id', // json element whose value is submitted when form is submitted
initialValue: '', // what should the value of the input field be when the form is loaded?
initialId: '', // what should the value of the hidden field be when the form is loaded?
watermark: '', // text that appears when flexbox is loaded, if no initialValue is specified. style with css class '.ffb-input.watermark'
width: 200, // total width of flexbox. auto-adjusts based on showArrow value
resultsProperty: 'results', // json property in response that references array of results
totalProperty: 'total', // json property in response that references the total results (for paging)
maxVisibleRows: 0, // default is 0, which means it is ignored. use either this, or paging.pageSize
paging: {
style: 'input', // or 'links'
cssClass: 'paging', // prefix with containerClass (e.g. .ffb .paging)
pageSize: 10, // acts as a threshold. if <= pageSize results, paging doesn't appear
maxPageLinks: 5, // used only if style is 'links'
showSummary: true, // whether to show 'displaying 1-10 of 200 results' text
summaryClass: 'summary', // class for 'displaying 1-10 of 200 results', prefix with containerClass
summaryTemplate: 'Displaying {start}-{end} of {total} results' // can use {page} and {pages} as well
}
};
$.fn.setValue = function(val) {
var id = '#' + this.attr('id');
$(id + '_hidden,' + id + '_input').val(val).removeClass('watermark');
};
})(jQuery);
File diff suppressed because one or more lines are too long
+36
View File
@@ -0,0 +1,36 @@
<%@ Page Language="VB" ValidateRequest="false" AutoEventWireup="false" CodeFile="AutoPostTest.aspx.vb" Inherits="PostTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.js"></script>
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<script type="text/javascript">
$(function() {
$("textarea").htmlarea(); // Initialize jHtmlArea's with all default values
//window.setTimeout(function() { $("form").submit(); }, 3000);
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server" ID="sm1"></asp:ScriptManager>
<asp:Literal runat="server" ID="litText"></asp:Literal><br />
<textarea runat="server" id="txtText" cols="50" rows="15"></textarea>
<input type="submit" value='manual submit' />
<br />
<asp:Button runat="server" ID="btnSubmit" Text="asp:Button" />
<asp:LinkButton runat="server" ID="lbSubmit" Text="asp:LinkButton"></asp:LinkButton>
</div>
</form>
</body>
</html>
+9
View File
@@ -0,0 +1,9 @@

Partial Class PostTest
Inherits System.Web.UI.Page
Public Sub PostTest_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
txtText.Value = Request("txtText")
litText.Text = txtText.Value
End Sub
End Class
+89
View File
@@ -0,0 +1,89 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.min.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<script type="text/javascript" src="scripts/jHtmlArea.ColorPickerMenu-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.ColorPickerMenu.css" />
<style type="text/css">
div.jHtmlArea { border: solid 1px #ccc; }
</style>
</head>
<body>
<h3>jHtmlArea Live Demo - jHtmlAreaColorPickerMenu Example</h3>
<p>The jHtmlAreaColorPickerMenu plugin/extension allows you to show a simple Color Picker Menu when the user clicks on the "forecolor" Toolbar Button.</p>
<p>
<a href="http://jhtmlarea.codeplex.com">jHtmlArea Project Homepage</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/Release/ProjectReleases.aspx">Downloads</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/Thread/List.aspx">Discussions</a>
&nbsp;|&nbsp;
<a href="http://jhtmlarea.codeplex.com/WorkItem/List.aspx">Issue Tracker</a>
</p>
<script type="text/javascript">
//// You can also override the "default" colors option of the jHtmlAreaColorPickerMenu
//// to show only the specific colors you want.
// jHtmlAreaColorPickerMenu.defaultOptions.colors = ["red", "yellow", "blue", "green", "purple", "white", "black"];
// The followin creates a jHtmlArea and adds a custom list of toolbar buttons.
// Among the buttons is the "forecolor" button that will automatically take
// advantage of the jHtmlAreaColorPickerMenu plugin.
$(function() {
$("#Textarea1").htmlarea({
toolbar: ["html", "|",
"forecolor", // <-- Add the "forecolor" Toolbar Button
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
});
});
</script>
<textarea id="Textarea1" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<hr />
The jHtmlAreaColorPickerMenu object can also be reused for other purposes. For example clicking on the button below will allow you to change the background color of the page.
<br />
<input id="choosecolor" type="button" value="Choose Color..." />
<script type="text/javascript">
$(function() {
$("#choosecolor").click(function() {
jHtmlAreaColorPickerMenu(this, {
colorChosen: function(color) {
$(document.body).css('background-color', color);
}
});
});
});
</script>
<br /><br /><br /><br /><br />
<hr />
<div style="position: relative;border: solid 30px #cccccc;">
<h3>Editor within a "position: relative" DIV element.</h3>
<textarea id="txtInDiv" cols="50" rows="15">Some <b>Test</b> content.</textarea>
<script type="text/javascript">
$(function() {
$("#txtInDiv").htmlarea({
toolbar: ["html", "|",
"forecolor", // <-- Add the "forecolor" Toolbar Button
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
});
});
</script>
</div>
</body>
</html>
+128
View File
@@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.7.2.custom.min.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jqueryui/ui-lightness/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
<style type="text/css">
/* body { background: #ccc;} */
div.jHtmlArea .ToolBar ul li a.custom_disk_button
{
background: url(images/disk.png) no-repeat;
background-position: 0 0;
}
div.jHtmlArea { border: solid 1px #ccc; }
</style>
</head>
<body>
<script type="text/javascript">
// You can do this to perform a global override of any of the "default" options
// jHtmlArea.fn.defaultOptions.css = "jHtmlArea.Editor.css";
$(function() {
//$("textarea").htmlarea(); // Initialize all TextArea's as jHtmlArea's with default values
$("#txtDefaultHtmlArea").htmlarea(); // Initialize jHtmlArea's with all default values
$("#txtCustomHtmlArea").htmlarea({
// Override/Specify the Toolbar buttons to show
toolbar: [
["bold", "italic", "underline", "|", "forecolor"],
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
["link", "unlink", "|", "image"],
[{
// This is how to add a completely custom Toolbar Button
css: "custom_disk_button",
text: "Save",
action: function(btn) {
// 'this' = jHtmlArea object
// 'btn' = jQuery object that represents the <A> "anchor" tag for the Toolbar Button
alert('SAVE!\n\n' + this.toHtmlString());
}
}]
],
// Override any of the toolbarText values - these are the Alt Text / Tooltips shown
// when the user hovers the mouse over the Toolbar Buttons
// Here are a couple translated to German, thanks to Google Translate.
toolbarText: $.extend({}, jHtmlArea.defaultOptions.toolbarText, {
"bold": "fett",
"italic": "kursiv",
"underline": "unterstreichen"
}),
// Specify a specific CSS file to use for the Editor
css: "style//jHtmlArea.Editor.css",
// Do something once the editor has finished loading
loaded: function() {
//// 'this' is equal to the jHtmlArea object
//alert("jHtmlArea has loaded!");
//this.showHTMLView(); // show the HTML view once the editor has finished loading
}
});
});
</script>
<textarea id="txtDefaultHtmlArea" cols="50" rows="15"><p><h3>Test H3</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<input type="button" value="Alert HTML" onclick="alert($('#txtDefaultHtmlArea').htmlarea('toHtmlString'));" />
<input type="button" value="Change Color to Blue" onclick="$('#txtDefaultHtmlArea').htmlarea('forecolor', 'blue');" />
<br /><hr /><br />
<textarea id="txtCustomHtmlArea" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
<input type="button" id="btnRemoveCustomHtmlArea" value="Remove jHtmlArea" />
<script type="text/javascript">
$(function() {
$("#btnRemoveCustomHtmlArea").click(function() {
$("#txtCustomHtmlArea").htmlarea("dispose");
});
});
</script>
<input type="button" id="btnResetCustomHtmlArea" value="Reset To Default Options" />
<script type="text/javascript">
$(function() {
$("#btnResetCustomHtmlArea").click(function() {
$("#txtCustomHtmlArea").htmlarea("dispose");
$("#txtCustomHtmlArea").htmlarea();
});
});
</script>
<br /><hr /><br />
<h3>Use jHtmlArea within jQuery UI Dialog</h3>
<script type="text/javascript">
$.ui.dialog.defaults.bgiframe = true;
$(function() {
$("#dialogShowButton").click(function() {
$("#dialog").dialog({width: 420});
$("#dialogEditor").htmlarea();
});
});
</script>
<input type="button" id="dialogShowButton" value="Show Dialog with jHtmlArea Editor" />
<div id="dialog" title="Basic dialog" style="display: none">
Basic jHtmlArea within jQuery UI Dialog
<br />
<textarea id="dialogEditor" rows="10" style="width: 400px">Some <b>Basic</b> text.</textarea>
</div>
<p>To see a "proper" example of the "Font Color" button, you'll want to see the "<a href="ColorPickerMenu.htm">jHtmlAreaColorPickerMenu</a>" in action here: <a href="ColorPickerMenu.htm">ColorPickerMenu.htm</a></p>
</body>
</html>
+117
View File
@@ -0,0 +1,117 @@
/* jHtmlArea - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
EXAMPLE USAGE:
-----------------------
See "Default.htm" for example usages.
Or, check out http://jhtmlarea.codeplex.com
CHANGE LOG
-----------------------
v0.7.0
- Fixed ColorPickerMenu positioning when placed within a "position: relative"
div element.
- Fixed ColorPickerMenu to auto-hide after a short delay (1 second) once the
user moves the mouse off the menu.
- Fixed Form Submit issue that caused the text to not be posted. Also fixed a
related issue with ASP.NET Postbacks.
- Added jHtmlArea.p method and "paragraph" functionality + toolbar button
This allows the user to change the formatting from <H1>, <H2>, etc. to <P>
- Added an "Automatic" color option to the ColorPickerMenu.
v0.6.0
- Hide All Toolbar buttons except the "html" button when entering
HTML Source view (via clicking "html" button or executing
jHtmlArea.showHTMLView). When toggling view back to the WYSIWYG editor
all other buttons will then be shown again.
- Added jHtmlArea.dispose method - Allows you to remove the WYSIWYG
editor, and go back to having a plain TextArea. Beware, there is a
memory leak when using this method; it's not too bad, but you want
to call this as few a number of times if you can. The memory leak
is due to the way the browsers handle removing DOM Elements.
- Added Indent and Outdent functionality - This includes toolbar buttons
and jHtmlArea.indent and jHtmlArea.outdent buttons.
- Added justifyLeft, justifyCenter, justifyRight functionality and toolbar
buttons.
- Added insertHorizontalRule functionality and toolbar button. This adds a
<hr> tag to the currently selected area.
- Added an "alias" method for jHtmlArea.execCommand named "ec" to help reduce the
file size of the script.
- Added increaseFontSize and decreaseFontSize functionality and toolbar buttons.
The increaseFontSize and decreaseFontSize doesn't currently work in Safari.
- Added forecolor functionality - Changes a font color for the selection or at the
insertion point. Requires a color value string to be passed in as a value argument.
- Fixed bug in jHtmlArea.toString method
- Added jHtmlArea.queryCommandValue method and it's alias "jHtmlArea.qc"
- Added the jHtmlAreaColorPickerMenu plugin/extension that resides within the
"jHtmlAreaColorPickerMenu.js" file. This file includes a somewhat generic color
picker menu that can be used for any purpose, plus it includes the code to wire
up and override the "stock" jHtmlColor.forecolor functionality and inject the new
Color Picker Menu functionality in it's place when you click on the "forecolor"
toolbar button.
- Changed the "execCommand" and "ec" second parameter to default to "false" if not
specified, and third parameter to default to "null" if not specified. This helps to
reduce the overall file size of the script.
- Added support for Toolbar Button Grouping, now with the additional buttons included
in this release, or even when any custom buttons are used, they will be able to display
nicely by "auto-wrapping" to the next line.
- Added a gradient background to the Toolbar Button Groups, with a slight reverse
gradient on the Buttons when the mouse is hovered over.
v0.5.0 - Initial Release
ICONS / IMAGES:
-----------------------
Some of the Icons within the jHtmlArea.png file are from the
Silk icon set at www.famfamfam.com.
They are licensed under the following license:
Silk icon set 1.3
_________________________________________
Mark James
http://www.famfamfam.com/lab/icons/silk/
_________________________________________
This work is licensed under a
Creative Commons Attribution 2.5 License.
[ http://creativecommons.org/licenses/by/2.5/ ]
This means you may use it for any purpose,
and make any changes you like.
All I ask is that you include a link back
to this page in your credits.
Are you using this icon set? Send me an email
(including a link or picture if available) to
mjames@gmail.com
Any other questions about this icon set please
contact mjames@gmail.com
Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

+365
View File
@@ -0,0 +1,365 @@
/*
* This file has been commented to support Visual Studio Intellisense.
* You should not use this file at runtime inside the browser--it is only
* intended to be used only for design-time IntelliSense. Please use the
* standard jHtmlArea library for all production use.
*/
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(options) {
/// <summary>
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
/// </summary>
/// <param name="options" type="Object">
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
/// </param>
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
/// </param>
/// <param name="options" type="Object">
/// The custom options you want applied to the jHtmlArea that is created. Optional.
/// </param>
/// <field name="defaultOptions" Type="Object">
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
/// </field>
/// <returns type="jHtmlArea" />
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
/// </param>
/// <param name="options" type="Object">
/// Optional. The custom options you want applied to the jHtmlArea that is created.
/// </param>
/// <returns type="jHtmlArea" />
},
execCommand: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
ec: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
queryCommandValue: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
qc: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
getSelectedHTML: function() {
/// <summary>
/// Returns the HTML that is currently selected within the editor.
/// </summary>
/// <returns type="String" />
},
getSelection: function() {
/// <summary>
/// Returns the Browser Selection object that represents the currently selected region of the editor.
/// </summary>
/// <returns type="Object" />
},
getRange: function() {
/// <summary>
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
/// </summary>
/// <returns type="Object" />
},
html: function(v) {
/// <summary>
/// 1: () Returns the HTML text value contained within the editor. 2: (v) Sets the editors value to the HTML text passed in.
/// </summary>
/// <param name="v" type="String">
/// The HTML text to set the editors value to.
/// </param>
},
pasteHTML: function(html) {
/// <summary>
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
/// </summary>
/// <param name="html" type="String">
/// The HTML text to paste/insert.
/// </param>
},
cut: function() {
/// <summary>
/// Copies the current selection to the clipboard and then deletes it.
/// </summary>
},
copy: function() {
/// <summary>
/// Copies the current selection to the clipboard.
/// </summary>
},
paste: function() {
/// <summary>
/// Overwrites the contents of the clipboard on the current selection.
/// </summary>
},
bold: function() {
/// <summary>
/// Toggles the current selection between bold and nonbold.
/// </summary>
},
italic: function() {
/// <summary>
/// Toggles the current selection between italic and nonitalic.
/// </summary>
},
underline: function() {
/// <summary>
/// Toggles the current selection between underlined and not underlined.
/// </summary>
},
strikeThrough: function() {
/// <summary>
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
/// </summary>
},
image: function(url) {
/// <summary>
/// This command will insert an image (referenced by url) at the insertion point.
/// If no URL is specified, a prompt will be displayed to the user.
/// </summary>
/// <param name="url" type="String">
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
/// </param>
},
removeFormat: function() {
/// <summary>
/// Removes the formatting tags from the current selection.
/// </summary>
},
link: function() {
/// <summary>
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
/// </summary>
},
unlink: function() {
/// <summary>
/// Removes any hyperlink from the current selection.
/// </summary>
},
orderedList: function() {
/// <summary>
/// Converts the text selection into an ordered list.
/// </summary>
},
unorderedList: function() {
/// <summary>
/// Converts the text selection into an unordered list.
/// </summary>
},
superscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
/// </summary>
},
subscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
/// </summary>
},
p: function() {
/// <summary>
/// Sets the current block format tag to <P>.
/// </summary>
},
h1: function() {
/// <summary>
/// Sets the current block format tag to <H1>.
/// </summary>
},
h2: function() {
/// <summary>
/// Sets the current block format tag to <H2>.
/// </summary>
},
h3: function() {
/// <summary>
/// Sets the current block format tag to <H3>.
/// </summary>
},
h4: function() {
/// <summary>
/// Sets the current block format tag to <H4>.
/// </summary>
},
h5: function() {
/// <summary>
/// Sets the current block format tag to <H5>.
/// </summary>
},
h6: function() {
/// <summary>
/// Sets the current block format tag to <H6>.
/// </summary>
},
heading: function(h) {
/// <summary>
/// Sets the current block format tag to <H?> tag.
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
/// </summary>
/// <param name="h" type="Number">
/// The Number of Header (<H?>) tag to format the current block with.
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
/// </param>
},
indent: function() {
/// <summary>
/// Indents the selection or insertion point.
/// </summary>
},
outdent: function() {
/// <summary>
/// Outdents the selection or insertion point.
/// </summary>
},
insertHorizontalRule: function() {
/// <summary>
/// Inserts a horizontal rule at the insertion point (deletes selection).
/// </summary>
},
justifyLeft: function() {
/// <summary>
/// Justifies the selection or insertion point to the left.
/// </summary>
},
justifyCenter: function() {
/// <summary>
/// Centers the selection or insertion point.
/// </summary>
},
justifyRight: function() {
/// <summary>
/// Right-justifies the selection or the insertion point.
/// </summary>
},
increaseFontSize: function() {
/// <summary>
/// Increases the Font Size around the selection or at the insertion point.
/// </summary>
},
decreaseFontSize: function() {
/// <summary>
/// Decreases the Font Size around the selection or at the insertion point.
/// </summary>
},
forecolor: function(c) {
/// <summary>
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
/// </summary>
},
formatBlock: function(v) {
/// <summary>
/// Sets the current block format tag.
/// </summary>
},
showHTMLView: function() {
/// <summary>
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
/// </summary>
},
hideHTMLView: function() {
/// <summary>
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
/// </summary>
},
toggleHTMLView: function() {
/// <summary>
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
/// </summary>
},
toHtmlString: function() {
/// <summary>
/// Returns the HTML text contained within the editor.
/// </summary>
/// <returns type="String" />
},
toString: function() {
/// <summary>
/// Return the Text contained within the editor, with all HTML tags removed.
/// </summary>
/// <returns type="String" />
},
updateTextArea: function() {
/// <summary>
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
/// </summary>
},
updateHtmlArea: function() {
/// <summary>
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
/// </summary>
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
})(jQuery);
+403
View File
@@ -0,0 +1,403 @@
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(opts) {
if (opts && typeof (opts) === "string") {
var args = [];
for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
var htmlarea = jHtmlArea(this[0]);
var f = htmlarea[opts];
if (f) { return f.apply(htmlarea, args); }
}
return this.each(function() { jHtmlArea(this, opts); });
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
if (elem.jquery) {
return jHtmlArea(elem[0]);
}
if (elem.jhtmlareaObject) {
return elem.jhtmlareaObject;
} else {
return new jHtmlArea.fn.init(elem, options);
}
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
if (elem.nodeName.toLowerCase() === "textarea") {
var opts = $.extend({}, jHtmlArea.defaultOptions, options);
elem.jhtmlareaObject = this;
var textarea = this.textarea = $(elem);
var container = this.container = $("<div/>").addClass("jHtmlArea").width(textarea.width()).insertAfter(textarea);
var toolbar = this.toolbar = $("<div/>").addClass("ToolBar").appendTo(container);
priv.initToolBar.call(this, opts);
var iframe = this.iframe = $("<iframe/>").height(textarea.height());
iframe.width(textarea.width() - ($.browser.msie ? 0 : 4));
var htmlarea = this.htmlarea = $("<div/>").append(iframe);
container.append(htmlarea).append(textarea.hide());
priv.initEditor.call(this, opts);
priv.attachEditorEvents.call(this);
// Fix total height to match TextArea
iframe.height(iframe.height() - toolbar.height());
toolbar.width(textarea.width() - 2);
if (opts.loaded) { opts.loaded.call(this); }
}
},
dispose: function() {
this.textarea.show().insertAfter(this.container);
this.container.remove();
this.textarea[0].jhtmlareaObject = null;
},
execCommand: function(a, b, c) {
this.iframe[0].contentWindow.focus();
this.editor.execCommand(a, b || false, c || null);
this.updateTextArea();
},
ec: function(a, b, c) {
this.execCommand(a, b, c);
},
queryCommandValue: function(a) {
this.iframe[0].contentWindow.focus();
return this.editor.queryCommandValue(a);
},
qc: function(a) {
return this.queryCommandValue(a);
},
getSelectedHTML: function() {
if ($.browser.msie) {
return this.getRange().htmlText;
} else {
var elem = this.getRange().cloneContents();
return $("<p/>").append($(elem)).html();
}
},
getSelection: function() {
if ($.browser.msie) {
//return (this.editor.parentWindow.getSelection) ? this.editor.parentWindow.getSelection() : this.editor.selection;
return this.editor.selection;
} else {
return this.iframe[0].contentDocument.defaultView.getSelection();
}
},
getRange: function() {
var s = this.getSelection();
if (!s) { return null; }
//return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
return (s.getRangeAt) ? s.getRangeAt(0) : s.createRange();
},
html: function(v) {
if (v) {
this.pastHTML(v);
} else {
return toHtmlString();
}
},
pasteHTML: function(html) {
this.iframe[0].contentWindow.focus();
var r = this.getRange();
if ($.browser.msie) {
r.pasteHTML(html);
} else if ($.browser.mozilla) {
r.deleteContents();
r.insertNode($((html.indexOf("<") != 0) ? $("<span/>").append(html) : html)[0]);
} else { // Safari
r.deleteContents();
r.insertNode($(this.iframe[0].contentWindow.document.createElement("span")).append($((html.indexOf("<") != 0) ? "<span>" + html + "</span>" : html))[0]);
}
r.collapse(false);
r.select();
},
cut: function() {
this.ec("cut");
},
copy: function() {
this.ec("copy");
},
paste: function() {
this.ec("paste");
},
bold: function() { this.ec("bold"); },
italic: function() { this.ec("italic"); },
underline: function() { this.ec("underline"); },
strikeThrough: function() { this.ec("strikethrough"); },
image: function(url) {
if ($.browser.msie && !url) {
this.ec("insertImage", true);
} else {
this.ec("insertImage", false, (url || prompt("Image URL:", "http://")));
}
},
removeFormat: function() {
this.ec("removeFormat", false, []);
this.unlink();
},
link: function() {
if ($.browser.msie) {
this.ec("createLink", true);
} else {
this.ec("createLink", false, prompt("Link URL:", "http://"));
}
},
unlink: function() { this.ec("unlink", false, []); },
orderedList: function() { this.ec("insertorderedlist"); },
unorderedList: function() { this.ec("insertunorderedlist"); },
superscript: function() { this.ec("superscript"); },
subscript: function() { this.ec("subscript"); },
p: function() {
this.formatBlock("<p>");
},
h1: function() {
this.heading(1);
},
h2: function() {
this.heading(2);
},
h3: function() {
this.heading(3);
},
h4: function() {
this.heading(4);
},
h5: function() {
this.heading(5);
},
h6: function() {
this.heading(6);
},
heading: function(h) {
this.formatBlock($.browser.msie ? "Heading " + h : "h" + h);
},
indent: function() {
this.ec("indent");
},
outdent: function() {
this.ec("outdent");
},
insertHorizontalRule: function() {
this.ec("insertHorizontalRule", false, "ht");
},
justifyLeft: function() {
this.ec("justifyLeft");
},
justifyCenter: function() {
this.ec("justifyCenter");
},
justifyRight: function() {
this.ec("justifyRight");
},
increaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") + 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "larger")[0]);
} else {
this.ec("increaseFontSize", false, "big");
}
},
decreaseFontSize: function() {
if ($.browser.msie) {
this.ec("fontSize", false, this.qc("fontSize") - 1);
} else if ($.browser.safari) {
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "smaller")[0]);
} else {
this.ec("decreaseFontSize", false, "small");
}
},
forecolor: function(c) {
this.ec("foreColor", false, c || prompt("Enter HTML Color:", "#"));
},
formatBlock: function(v) {
this.ec("formatblock", false, v || null);
},
showHTMLView: function() {
this.updateTextArea();
this.textarea.show();
this.htmlarea.hide();
$("ul li:not(li:has(a.html))", this.toolbar).hide();
$("ul:not(:has(:visible))", this.toolbar).hide();
$("ul li a.html", this.toolbar).addClass("highlighted");
},
hideHTMLView: function() {
this.updateHtmlArea();
this.textarea.hide();
this.htmlarea.show();
$("ul", this.toolbar).show();
$("ul li", this.toolbar).show().find("a.html").removeClass("highlighted");
},
toggleHTMLView: function() {
(this.textarea.is(":hidden")) ? this.showHTMLView() : this.hideHTMLView();
},
toHtmlString: function() {
return this.editor.body.innerHTML;
},
toString: function() {
return this.editor.body.innerText;
},
updateTextArea: function() {
this.textarea.val(this.toHtmlString());
},
updateHtmlArea: function() {
this.editor.body.innerHTML = this.textarea.val();
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
jHtmlArea.defaultOptions = {
toolbar: [
["html"], ["bold", "italic", "underline", "strikethrough", "|", "subscript", "superscript"],
["increasefontsize", "decreasefontsize"],
["orderedlist", "unorderedlist"],
["indent", "outdent"],
["justifyleft", "justifycenter", "justifyright"],
["link", "unlink", "image", "horizontalrule"],
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
["cut", "copy", "paste"]
],
css: null,
toolbarText: {
bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strike-Through",
cut: "Cut", copy: "Copy", paste: "Paste",
h1: "Heading 1", h2: "Heading 2", h3: "Heading 3", h4: "Heading 4", h5: "Heading 5", h6: "Heading 6", p: "Paragraph",
indent: "Indent", outdent: "Outdent", horizontalrule: "Insert Horizontal Rule",
justifyleft: "Left Justify", justifycenter: "Center Justify", justifyright: "Right Justify",
increasefontsize: "Increase Font Size", decreasefontsize: "Decrease Font Size", forecolor: "Text Color",
link: "Insert Link", unlink: "Remove Link", image: "Insert Image",
orderedlist: "Insert Ordered List", unorderedlist: "Insert Unordered List",
subscript: "Subscript", superscript: "Superscript",
html: "Show/Hide HTML Source View"
}
};
var priv = {
toolbarButtons: {
strikethrough: "strikeThrough", orderedlist: "orderedList", unorderedlist: "unorderedList",
horizontalrule: "insertHorizontalRule",
justifyleft: "justifyLeft", justifycenter: "justifyCenter", justifyright: "justifyRight",
increasefontsize: "increaseFontSize", decreasefontsize: "decreaseFontSize",
html: function(btn) {
this.toggleHTMLView();
}
},
initEditor: function(options) {
var edit = this.editor = this.iframe[0].contentWindow.document;
edit.designMode = 'on';
edit.open();
edit.write(this.textarea.val());
edit.close();
if (options.css) {
var e = edit.createElement('link'); e.rel = 'stylesheet'; e.type = 'text/css'; e.href = options.css; edit.getElementsByTagName('head')[0].appendChild(e);
}
},
initToolBar: function(options) {
var that = this;
var menuItem = function(className, altText, action) {
return $("<li/>").append($("<a href='javascript:void(0);'/>").addClass(className).attr("title", altText).click(function() { action.call(that, $(this)); }));
};
function addButtons(arr) {
var ul = $("<ul/>").appendTo(that.toolbar);
for (var i = 0; i < arr.length; i++) {
var e = arr[i];
if ((typeof (e)).toLowerCase() === "string") {
if (e === "|") {
ul.append($('<li class="separator"/>'));
} else {
var f = (function(e) {
// If button name exists in priv.toolbarButtons then call the "method" defined there, otherwise call the method with the same name
var m = priv.toolbarButtons[e] || e;
if ((typeof (m)).toLowerCase() === "function") {
return function(btn) { m.call(this, btn); };
} else {
return function() { this[m](); this.editor.body.focus(); };
}
})(e.toLowerCase());
var t = options.toolbarText[e.toLowerCase()];
ul.append(menuItem(e.toLowerCase(), t || e, f));
}
} else {
ul.append(menuItem(e.css, e.text, e.action));
}
}
};
if (options.toolbar.length !== 0 && priv.isArray(options.toolbar[0])) {
for (var i = 0; i < options.toolbar.length; i++) {
addButtons(options.toolbar[i]);
}
} else {
addButtons(options.toolbar);
}
},
attachEditorEvents: function() {
var t = this;
var fnHA = function() {
t.updateHtmlArea();
};
this.textarea.click(fnHA).
keyup(fnHA).
keydown(fnHA).
mousedown(fnHA).
blur(fnHA);
var fnTA = function() {
t.updateTextArea();
};
$(this.editor.body).click(fnTA).
keyup(fnTA).
keydown(fnTA).
mousedown(fnTA).
blur(fnTA);
$('form').submit(function() { t.toggleHTMLView(); t.toggleHTMLView(); });
//$(this.textarea[0].form).submit(function() { //this.textarea.closest("form").submit(function() {
// Fix for ASP.NET Postback Model
if (window.__doPostBack) {
var old__doPostBack = __doPostBack;
window.__doPostBack = function() {
if (t) {
if (t.toggleHTMLView) {
t.toggleHTMLView();
t.toggleHTMLView();
}
}
return old__doPostBack.apply(window, arguments);
};
}
},
isArray: function(v) {
return v && typeof v === 'object' && typeof v.length === 'number' && typeof v.splice === 'function' && !(v.propertyIsEnumerable('length'));
}
};
})(jQuery);
+357
View File
@@ -0,0 +1,357 @@
/*
* This file has been commented to support Visual Studio Intellisense.
* You should not use this file at runtime inside the browser--it is only
* intended to be used only for design-time IntelliSense. Please use the
* standard jHtmlArea library for all production use.
*/
/*
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
$.fn.htmlarea = function(options) {
/// <summary>
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
/// </summary>
/// <param name="options" type="Object">
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
/// </param>
};
var jHtmlArea = window.jHtmlArea = function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
/// </param>
/// <param name="options" type="Object">
/// The custom options you want applied to the jHtmlArea that is created. Optional.
/// </param>
/// <field name="defaultOptions" Type="Object">
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
/// </field>
/// <returns type="jHtmlArea" />
};
jHtmlArea.fn = jHtmlArea.prototype = {
// The current version of jHtmlArea being used
jhtmlarea: "0.7.0",
init: function(elem, options) {
/// <summary>
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
/// </summary>
/// <param name="elem" type="TextArea DOM Element">
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
/// </param>
/// <param name="options" type="Object">
/// Optional. The custom options you want applied to the jHtmlArea that is created.
/// </param>
/// <returns type="jHtmlArea" />
},
execCommand: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
ec: function(a, b, c) {
/// <summary>
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
/// </param>
/// <param name="b" type="Boolean">
/// Optional. Boolean that specifies one of the following values:
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
/// "true" = Display a user interface if the command supports one.
/// </param>
/// <param name="c" type="Object">
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
/// </param>
},
queryCommandValue: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
qc: function(a) {
/// <summary>
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
/// </summary>
/// <param name="a" type="String">
/// Required. String that specifies a command identifier.
/// </param>
/// <returns type="Variant" />
},
getSelectedHTML: function() {
/// <summary>
/// Returns the HTML that is currently selected within the editor.
/// </summary>
/// <returns type="String" />
},
getSelection: function() {
/// <summary>
/// Returns the Browser Selection object that represents the currently selected region of the editor.
/// </summary>
/// <returns type="Object" />
},
getRange: function() {
/// <summary>
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
/// </summary>
/// <returns type="Object" />
},
pasteHTML: function(html) {
/// <summary>
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
/// </summary>
/// <param name="html" type="String">
/// The HTML text to paste/insert.
/// </param>
},
cut: function() {
/// <summary>
/// Copies the current selection to the clipboard and then deletes it.
/// </summary>
},
copy: function() {
/// <summary>
/// Copies the current selection to the clipboard.
/// </summary>
},
paste: function() {
/// <summary>
/// Overwrites the contents of the clipboard on the current selection.
/// </summary>
},
bold: function() {
/// <summary>
/// Toggles the current selection between bold and nonbold.
/// </summary>
},
italic: function() {
/// <summary>
/// Toggles the current selection between italic and nonitalic.
/// </summary>
},
underline: function() {
/// <summary>
/// Toggles the current selection between underlined and not underlined.
/// </summary>
},
strikeThrough: function() {
/// <summary>
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
/// </summary>
},
image: function(url) {
/// <summary>
/// This command will insert an image (referenced by url) at the insertion point.
/// If no URL is specified, a prompt will be displayed to the user.
/// </summary>
/// <param name="url" type="String">
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
/// </param>
},
removeFormat: function() {
/// <summary>
/// Removes the formatting tags from the current selection.
/// </summary>
},
link: function() {
/// <summary>
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
/// </summary>
},
unlink: function() {
/// <summary>
/// Removes any hyperlink from the current selection.
/// </summary>
},
orderedList: function() {
/// <summary>
/// Converts the text selection into an ordered list.
/// </summary>
},
unorderedList: function() {
/// <summary>
/// Converts the text selection into an unordered list.
/// </summary>
},
superscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
/// </summary>
},
subscript: function() {
/// <summary>
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
/// </summary>
},
p: function() {
/// <summary>
/// Sets the current block format tag to <P>.
/// </summary>
},
h1: function() {
/// <summary>
/// Sets the current block format tag to <H1>.
/// </summary>
},
h2: function() {
/// <summary>
/// Sets the current block format tag to <H2>.
/// </summary>
},
h3: function() {
/// <summary>
/// Sets the current block format tag to <H3>.
/// </summary>
},
h4: function() {
/// <summary>
/// Sets the current block format tag to <H4>.
/// </summary>
},
h5: function() {
/// <summary>
/// Sets the current block format tag to <H5>.
/// </summary>
},
h6: function() {
/// <summary>
/// Sets the current block format tag to <H6>.
/// </summary>
},
heading: function(h) {
/// <summary>
/// Sets the current block format tag to <H?> tag.
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
/// </summary>
/// <param name="h" type="Number">
/// The Number of Header (<H?>) tag to format the current block with.
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
/// </param>
},
indent: function() {
/// <summary>
/// Indents the selection or insertion point.
/// </summary>
},
outdent: function() {
/// <summary>
/// Outdents the selection or insertion point.
/// </summary>
},
insertHorizontalRule: function() {
/// <summary>
/// Inserts a horizontal rule at the insertion point (deletes selection).
/// </summary>
},
justifyLeft: function() {
/// <summary>
/// Justifies the selection or insertion point to the left.
/// </summary>
},
justifyCenter: function() {
/// <summary>
/// Centers the selection or insertion point.
/// </summary>
},
justifyRight: function() {
/// <summary>
/// Right-justifies the selection or the insertion point.
/// </summary>
},
increaseFontSize: function() {
/// <summary>
/// Increases the Font Size around the selection or at the insertion point.
/// </summary>
},
decreaseFontSize: function() {
/// <summary>
/// Decreases the Font Size around the selection or at the insertion point.
/// </summary>
},
forecolor: function(c) {
/// <summary>
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
/// </summary>
},
formatBlock: function(v) {
/// <summary>
/// Sets the current block format tag.
/// </summary>
},
showHTMLView: function() {
/// <summary>
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
/// </summary>
},
hideHTMLView: function() {
/// <summary>
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
/// </summary>
},
toggleHTMLView: function() {
/// <summary>
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
/// </summary>
},
toHtmlString: function() {
/// <summary>
/// Returns the HTML text contained within the editor.
/// </summary>
/// <returns type="String" />
},
toString: function() {
/// <summary>
/// Return the Text contained within the editor, with all HTML tags removed.
/// </summary>
/// <returns type="String" />
},
updateTextArea: function() {
/// <summary>
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
/// </summary>
},
updateHtmlArea: function() {
/// <summary>
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
/// </summary>
}
};
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
})(jQuery);
File diff suppressed because one or more lines are too long
@@ -0,0 +1,189 @@
/*
* jHtmlAreaColorPickerMenu 0.7.0 - A Color Picker Extension to jHtmlArea
* Part of the jHtmlArea Project
* Copyright (c) 2009 Chris Pietschmann
* http://jhtmlarea.codeplex.com
* Licensed under the Microsoft Reciprocal License (Ms-RL)
* http://jhtmlarea.codeplex.com/license
*/
(function($) {
if (jHtmlArea) {
var oldForecolor = jHtmlArea.fn.forecolor;
jHtmlArea.fn.forecolor = function(c) {
if (c) {
// If color is specified, then use the "default" method functionality
oldForecolor.call(this, c);
} else {
// If no color is specified, then display color picker ui
var that = this;
var rng = this.getRange();
jHtmlAreaColorPickerMenu($(".forecolor", this.toolbar), {
colorChosen: function(color) {
if ($.browser.msie) {
rng.execCommand("ForeColor", false, color);
} else {
that.forecolor(color);
}
}
});
}
};
}
var menu = window.jHtmlAreaColorPickerMenu = function(ownerElement, options) {
return new jHtmlAreaColorPickerMenu.fn.init(ownerElement, options);
};
menu.fn = menu.prototype = {
jhtmlareacolorpickermenu: "0.7.0",
init: function(ownerElement, options) {
var opts = $.extend({}, menu.defaultOptions, options);
var that = this;
var owner = this.owner = $(ownerElement);
var position = owner.position();
if (menu.instance) {
menu.instance.hide();
}
jHtmlAreaColorPickerMenu.instance = this;
var picker = this.picker = $("<div/>").css({
position: "absolute",
left: position.left + opts.offsetLeft,
top: position.top + owner.height() + opts.offsetTop,
"z-index": opts["z-index"]
}).addClass("jHtmlAreaColorPickerMenu");
for (var i = 0; i < opts.colors.length; i++) {
var c = opts.colors[i];
$("<div/>").css("background-color", c).appendTo(picker).click(
(function(color) {
return function() {
if (opts.colorChosen) {
opts.colorChosen.call(this, color);
}
that.hide();
};
})(c)
);
}
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(
function() {
if (opts.colorChosen) {
opts.colorChosen.call(this, null);
}
that.hide();
}
);
var autoHide = false;
picker.appendTo(owner.parent()).
show().
mouseout(function() {
autoHide = true;
that.currentTimeout = window.setTimeout(function() { if (autoHide === true) { that.hide(); } }, 1000);
}).
mouseover(function() {
if (that.currentTimeout) {
window.clearTimeout(that.currentTimeout);
that.currentTimeout = null;
}
autoHide = false;
});
},
hide: function() {
this.picker.hide();
this.picker.remove();
}
};
menu.fn.init.prototype = menu.fn;
menu.defaultOptions = {
"z-index": 0,
offsetTop: 0,
offsetLeft: 0,
colors: [
"#ffffff",
"#cccccc",
"#c0c0c0",
"#999999",
"#666666",
"#333333",
"#000000",
"#ffcccc",
"#ff6666",
"#ff0000",
"#cc0000",
"#990000",
"#660000",
"#330000",
"#ffcc99",
"#ff9966",
"#ff9900",
"#ff6600",
"#cc6600",
"#993300",
"#663300",
"#ffff99",
"#ffff66",
"#ffcc66",
"#ffcc33",
"#cc9933",
"#996633",
"#663333",
"#ffffcc",
"#ffff33",
"#ffff00",
"#ffcc00",
"#999900",
"#666600",
"#333300",
"#99ff99",
"#66ff99",
"#33ff33",
"#33cc00",
"#009900",
"#006600",
"#003300",
"#99FFFF",
"#33FFFF",
"#66CCCC",
"#00CCCC",
"#339999",
"#336666",
"#003333",
"#CCFFFF",
"#66FFFF",
"#33CCFF",
"#3366FF",
"#3333FF",
"#000099",
"#000066",
"#CCCCFF",
"#9999FF",
"#6666CC",
"#6633FF",
"#6600CC",
"#333399",
"#330099",
"#FFCCFF",
"#FF99FF",
"#CC66CC",
"#CC33CC",
"#993399",
"#663366",
"#330033"
],
colorChosen: null
};
})(jQuery);
@@ -0,0 +1,8 @@
// jHtmlArea - http://jhtmlarea.codeplex.com - (c)2009 Chris Pietschmann
(function($){if(jHtmlArea){var oldForecolor=jHtmlArea.fn.forecolor;jHtmlArea.fn.forecolor=function(c){if(c){oldForecolor.call(this,c);}else{var that=this;var rng=this.getRange();jHtmlAreaColorPickerMenu($(".forecolor",this.toolbar),{colorChosen:function(color){if($.browser.msie){rng.execCommand("ForeColor",false,color);}else{that.forecolor(color);}}});}};}
var menu=window.jHtmlAreaColorPickerMenu=function(ownerElement,options){return new jHtmlAreaColorPickerMenu.fn.init(ownerElement,options);};menu.fn=menu.prototype={jhtmlareacolorpickermenu:"0.7.0",init:function(ownerElement,options){var opts=$.extend({},menu.defaultOptions,options);var that=this;var owner=this.owner=$(ownerElement);var position=owner.position();if(menu.instance){menu.instance.hide();}
jHtmlAreaColorPickerMenu.instance=this;var picker=this.picker=$("<div/>").css({position:"absolute",left:position.left+opts.offsetLeft,top:position.top+owner.height()+opts.offsetTop,"z-index":opts["z-index"]}).addClass("jHtmlAreaColorPickerMenu");for(var i=0;i<opts.colors.length;i++){var c=opts.colors[i];$("<div/>").css("background-color",c).appendTo(picker).click((function(color){return function(){if(opts.colorChosen){opts.colorChosen.call(this,color);}
that.hide();};})(c));}
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(function(){if(opts.colorChosen){opts.colorChosen.call(this,null);}
that.hide();});var autoHide=false;picker.appendTo(owner.parent()).show().mouseout(function(){autoHide=true;that.currentTimeout=window.setTimeout(function(){if(autoHide===true){that.hide();}},1000);}).mouseover(function(){if(that.currentTimeout){window.clearTimeout(that.currentTimeout);that.currentTimeout=null;}
autoHide=false;});},hide:function(){this.picker.hide();this.picker.remove();}};menu.fn.init.prototype=menu.fn;menu.defaultOptions={"z-index":0,offsetTop:0,offsetLeft:0,colors:["#ffffff","#cccccc","#c0c0c0","#999999","#666666","#333333","#000000","#ffcccc","#ff6666","#ff0000","#cc0000","#990000","#660000","#330000","#ffcc99","#ff9966","#ff9900","#ff6600","#cc6600","#993300","#663300","#ffff99","#ffff66","#ffcc66","#ffcc33","#cc9933","#996633","#663333","#ffffcc","#ffff33","#ffff00","#ffcc00","#999900","#666600","#333300","#99ff99","#66ff99","#33ff33","#33cc00","#009900","#006600","#003300","#99FFFF","#33FFFF","#66CCCC","#00CCCC","#339999","#336666","#003333","#CCFFFF","#66FFFF","#33CCFF","#3366FF","#3333FF","#000099","#000066","#CCCCFF","#9999FF","#6666CC","#6633FF","#6600CC","#333399","#330099","#FFCCFF","#FF99FF","#CC66CC","#CC33CC","#993399","#663366","#330033"],colorChosen:null};})(jQuery);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
div.jHtmlAreaColorPickerMenu {border: solid 1px #bbb; background-color: #ddd; width: 112px;}
div.jHtmlAreaColorPickerMenu div {float: left; margin: 2px; width: 12px; height: 14px;}
div.jHtmlAreaColorPickerMenu div:hover {margin: 0px; border: dotted 2px black;}
div.jHtmlAreaColorPickerMenu div.automatic { width: 104px; height: auto; padding: 2px;}
div.jHtmlAreaColorPickerMenu div.automatic div { margin: 2px; width: 12px; height: 14px; border: solid 1px black;}
@@ -0,0 +1,6 @@
body
{
background: #000;
color: #fff;
margin: 2px;
}
+48
View File
@@ -0,0 +1,48 @@
div.jHtmlArea { display: inline block; }
div.jHtmlArea div { padding: 0px; margin: 0px; }
div.jHtmlArea .ToolBar { }
div.jHtmlArea .ToolBar ul { border: solid 1px #ccc; margin: 1px; padding: 1px; float: left; background: #fff url(jHtmlArea_Toolbar_Group_BG.png) repeat-x;}
div.jHtmlArea .ToolBar ul li { list-style-type: none; float: left; border: none; padding: 1px; margin: 1px; }
div.jHtmlArea .ToolBar ul li:hover { border: solid 1px #ccc; background: #ddd url(jHtmlArea_Toolbar_Group__Btn_Select_BG.png); padding: 0; }
div.jHtmlArea .ToolBar ul li a { display: block; width: 16px; height: 16px; background: url(jHtmlArea.png) no-repeat -16px -500px; border: none; cursor: pointer; padding: 0px; }
div.jHtmlArea .ToolBar ul li a.highlighted { border: solid 1px #aaa; background-color: #bbb; padding: 0; }
div.jHtmlArea .ToolBar ul li.separator {height: 16px; margin: 0 2px 0 3px; border-left: 1px solid #ccc;}
div.jHtmlArea .ToolBar ul li.separator:hover { padding: 1px; background-color: #fff; border-top:none; border-bottom:none; border-right:none;}
div.jHtmlArea .ToolBar ul li a:hover { }
div.jHtmlArea .ToolBar ul li a.bold { background-position: 0 0; }
div.jHtmlArea .ToolBar ul li a.italic { background-position: -16px 0; }
div.jHtmlArea .ToolBar ul li a.underline { background-position: -32px 0; }
div.jHtmlArea .ToolBar ul li a.strikethrough { background-position: -48px 0; }
div.jHtmlArea .ToolBar ul li a.link { background-position: -64px 0; }
div.jHtmlArea .ToolBar ul li a.unlink { background-position: -80px 0; }
div.jHtmlArea .ToolBar ul li a.orderedlist { background-position: -96px 0; }
div.jHtmlArea .ToolBar ul li a.unorderedlist { background-position: -112px 0; }
div.jHtmlArea .ToolBar ul li a.image { background-position: -128px 0; }
div.jHtmlArea .ToolBar ul li a.cut { background-position: -144px 0; }
div.jHtmlArea .ToolBar ul li a.copy { background-position: -160px 0; }
div.jHtmlArea .ToolBar ul li a.paste { background-position: -176px 0; }
div.jHtmlArea .ToolBar ul li a.html { background-position: -192px 0; opacity:0.6; filter:alpha(opacity=60);}
div.jHtmlArea .ToolBar ul li a.html.highlighted { opacity:1.0; filter:alpha(opacity=100);}
div.jHtmlArea .ToolBar ul li a.h1 { background-position: 0 -16px;}
div.jHtmlArea .ToolBar ul li a.h2 { background-position: -16px -16px;}
div.jHtmlArea .ToolBar ul li a.h3 { background-position: -32px -16px;}
div.jHtmlArea .ToolBar ul li a.h4 { background-position: -48px -16px;}
div.jHtmlArea .ToolBar ul li a.h5 { background-position: -64px -16px;}
div.jHtmlArea .ToolBar ul li a.h6 { background-position: -80px -16px;}
div.jHtmlArea .ToolBar ul li a.subscript { background-position: -96px -16px;}
div.jHtmlArea .ToolBar ul li a.superscript { background-position: -112px -16px;}
div.jHtmlArea .ToolBar ul li a.indent { background-position: -128px -16px;}
div.jHtmlArea .ToolBar ul li a.outdent { background-position: -144px -16px;}
div.jHtmlArea .ToolBar ul li a.horizontalrule { background-position: -160px -16px;}
div.jHtmlArea .ToolBar ul li a.p { background-position: -176px -16px;}
div.jHtmlArea .ToolBar ul li a.justifyleft { background-position: 0 -32px;}
div.jHtmlArea .ToolBar ul li a.justifycenter { background-position: -16px -32px;}
div.jHtmlArea .ToolBar ul li a.justifyright { background-position: -32px -32px;}
div.jHtmlArea .ToolBar ul li a.increasefontsize { background-position: -48px -32px;}
div.jHtmlArea .ToolBar ul li a.decreasefontsize { background-position: -64px -32px;}
div.jHtmlArea .ToolBar ul li a.forecolor { background-position: -80px -32px;}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,406 @@
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; }
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; }
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: .2em; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { padding: .2em; zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
+14 -85
View File
@@ -20,9 +20,6 @@
<code>SAMOA</code>
<code>AP</code>
</temple>
<temple name="Arequipa Peru Temple">
<code>AREQU</code>
</temple>
<temple name="Asuncion, Paraguay">
<code>ASUNC</code>
</temple>
@@ -30,9 +27,6 @@
<code>ATLAN</code>
<code>AT</code>
</temple>
<temple name="Barranquilla Colombia Temple">
<code>BARRA</code>
</temple>
<temple name="Baton Rouge, Louisiana">
<code>BROUG</code>
</temple>
@@ -63,9 +57,6 @@
<temple name="Bountiful, Utah">
<code>BOUNT</code>
</temple>
<temple name="Brigham City Utah Temple">
<code>BRIGH</code>
</temple>
<temple name="Brisbane, Australia">
<code>BRISB</code>
</temple>
@@ -88,12 +79,8 @@
<code>ALBR</code>
</temple>
<temple name="Cebu, Philippines">
<code>CEBUP</code>
<code>CEBU</code>
</temple>
<temple name="Cedar City Utah">
<code>CEDAR</code>
</temple>
<temple name="Chicago, Illinois">
<code>CHICA</code>
<code>CH</code>
@@ -107,18 +94,15 @@
<temple name="Colonia Juarez, Chihuahua, Mexico">
<code>COLJU</code>
</temple>
<temple name="Columbia River, Washington">
<code>CRIVE</code>
</temple>
<temple name="Columbia, South Carolina">
<code>COLSC</code>
</temple>
<temple name="Columbia River, Washington">
<code>CRIVE</code>
</temple>
<temple name="Columbus, Ohio">
<code>COLUM</code>
</temple>
<temple name="Concepción Chile">
<code>CONCE</code>
</temple>
<temple name="Copenhagen, Denmark">
<code>COPEN</code>
</temple>
@@ -145,19 +129,6 @@
<temple name="Edmonton, Alberta">
<code>EDMON</code>
</temple>
<temple name="Endowment House">
<code>EHOUS</code>
<code>EH</code>
</temple>
<temple name="Fort Collins Colorado">
<code>FORTC</code>
</temple>
<temple name="Fort Lauderdale Florida">
<code>FORTL</code>
</temple>
<temple name="Fortaleza Brazil">
<code>FORTA</code>
</temple>
<temple name="Frankfurt, Germany">
<code>FRANK</code>
<code>FR</code>
@@ -220,9 +191,6 @@
<code>IFALL</code>
<code>IF</code>
</temple>
<temple name="Indianapolis Indiana">
<code>INDIA</code>
</temple>
<temple name="Johannesburg, South Africa">
<code>JOHAN</code>
<code>JO</code>
@@ -234,14 +202,10 @@
<temple name="Kansas City, Missouri">
<code>KANSA</code>
</temple>
<temple name="Kinshasa Democratic Republic of the Congo">
<code>KINSH</code>
</temple>
<temple name="Kona, Hawaii">
<code>KONA</code>
</temple>
<temple name="Kiev, Ukraine">
<code>KYIV</code>
<code>KIEV</code>
</temple>
<temple name="Kirtland, Ohio">
@@ -259,9 +223,6 @@
<code>LIMA</code>
<code>LI</code>
</temple>
<temple name="Lisbon Portugal">
<code>LISBO</code>
</temple>
<temple name="Logan, Utah">
<code>LOGAN</code>
<code>LG</code>
@@ -309,9 +270,6 @@
<temple name="Merida, Mexico">
<code>MERID</code>
</temple>
<temple name="Meridian Idaho">
<code>MIDAH</code>
</temple>
<temple name="Mesa, Arizona">
<code>ARIZO</code>
<code>AZ</code>
@@ -367,7 +325,6 @@
<code>OKLAH</code>
</temple>
<temple name="Oquirrh Mountain, Utah">
<code>OQUIR</code>
<code>OMOUN</code>
</temple>
<temple name="Orlando, Florida">
@@ -383,12 +340,6 @@
<code>PAPEE</code>
<code>TA</code>
</temple>
<temple name="Paris France">
<code>PARIS</code>
</temple>
<temple name="Payson Utah">
<code>PAYSO</code>
</temple>
<temple name="Perth, Australia">
<code>PERTH</code>
</temple>
@@ -398,9 +349,6 @@
<temple name="Phoenix, Arizona">
<code>PHOEN</code>
</temple>
<temple name="Port-au-Prince Haiti">
<code>PORTA</code>
</temple>
<temple name="Portland, Oregon">
<code>PORTL</code>
<code>PT</code>
@@ -411,9 +359,6 @@
<temple name="Preston, England">
<code>PREST</code>
</temple>
<temple name="Provo City Center, Utah">
<code>PROCC</code>
</temple>
<temple name="Provo, Utah">
<code>PROVO</code>
<code>PV</code>
@@ -440,7 +385,6 @@
<code>REXBU</code>
</temple>
<temple name="Rome, Italy">
<code>ROMEI</code>
<code>ROME</code>
</temple>
<temple name="Sacramento, California">
@@ -450,6 +394,12 @@
<code>SGEOR</code>
<code>SG</code>
</temple>
<temple name="St. Louis, Missouri">
<code>SLOUI</code>
</temple>
<temple name="St. Paul, Minnesota">
<code>SPMIN</code>
</temple>
<temple name="Salt Lake City, Utah">
<code>SLAKE</code>
<code>SL</code>
@@ -465,7 +415,6 @@
<code>SJOSE</code>
</temple>
<temple name="San Salvador, El Salvador">
<code>SANSA</code>
<code>SSALV</code>
</temple>
<temple name="Santiago, Chile">
@@ -479,9 +428,6 @@
<code>SPAUL</code>
<code>SP</code>
</temple>
<temple name="Sapporo Japan">
<code>SAPPO</code>
</temple>
<temple name="Seattle, Washington">
<code>SEATT</code>
<code>SE</code>
@@ -496,15 +442,6 @@
<temple name="Spokane, Washington">
<code>SPOKA</code>
</temple>
<temple name="St. Louis, Missouri">
<code>SLOUI</code>
</temple>
<temple name="St. Paul, Minnesota">
<code>SPMIN</code>
</temple>
<temple name="Star Valley Wyoming">
<code>STARV</code>
</temple>
<temple name="Stockholm, Sweden">
<code>STOCK</code>
<code>ST</code>
@@ -526,15 +463,9 @@
<temple name="Tegucigalpa, Honduras">
<code>TEGUC</code>
</temple>
<temple name="The Gila Valley Arizona">
<code>GILAV</code>
</temple>
<temple name="The Hague, Netherlands">
<code>HAGUE</code>
</temple>
<temple name="Tijuana Mexico">
<code>TIJUA</code>
</temple>
<temple name="Tokyo, Japan">
<code>TOKYO</code>
<code>TK</code>
@@ -544,18 +475,12 @@
<code>TORNO</code>
<code>TR</code>
</temple>
<temple name="Trujillo, Peru">
<code>TRUJI</code>
</temple>
<temple name="Tucson Arizona">
<code>TUCSO</code>
</temple>
<temple name="Tuxtla Gutierrez, Mexico">
<code>TGUTI</code>
</temple>
<temple name="Twin Falls, Idaho">
<code>TWINF</code>
<code>TFALL</code>
<code>TWINF</code>
</temple>
<temple name="Vancouver, British Columbia">
<code>VANCO</code>
@@ -577,6 +502,10 @@
<code>WINTE</code>
<code>WQUAR</code>
</temple>
<temple name="Endowment House">
<code>EHOUS</code>
<code>EH</code>
</temple>
<temple name="President's Office">
<code>POFFI</code>
<code>PO</code>
+36 -36
View File
@@ -13,8 +13,8 @@ gramps(1) @VERSION@ gramps(1)
**SYNOPSIS**
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *DATABASE*
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**--remove=** *FAMILY_TREE_PATTERN*]
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
[**-e** | **--export=** *FILE* [**-f** | **--format=** *FORMAT*]]
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *OPTION
STRING*]] [*FILE*] [**--version**]
@@ -50,23 +50,23 @@ gramps(1) @VERSION@ gramps(1)
Formats available for export are **gramps-xml** (guessed if *FILE*
ends with **.gramps** ), **gedcom** (guessed if *FILE* ends with
**.ged** ), or any file export available through the Gramps plugin
**.ged** ), or any file export available through the Gramps plugin
system.
Formats available for import are **gramps-xml** , **gedcom** ,
**gramps-pkg** (guessed if *FILE* ends with **.gpkg** ),
and **geneweb** (guessed if *FILE* ends with **.gw** ).
Formats available for export are **gramps-xml** , **gedcom** ,
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
Formats available for export are **gramps-xml** , **gedcom** ,
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
**geneweb**.
**-l**
**-l**
Print a list of known family trees.
**-L**
**-L**
Print a detailed list of known family trees.
@@ -88,16 +88,16 @@ gramps(1) @VERSION@ gramps(1)
When more than one input file is given, each has to be preceded
by **-i** flag. The files are imported in the specified order, i.e.
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
might produce different gramps IDs in the resulting database.
**-e** , **--export=** *FILE*
Export data into *FILE* . For **gramps-xml** , **gedcom**
, **wft** , **gramps-pkg** , and **geneweb** , the *FILE* is the
**-e** , **--export=** *FICHIER*
Export data into *FILE* . For **gramps-xml** , **gedcom**
, **wft** , **gramps-pkg** , et **geneweb** , the *FILE* is the
name of the resulting file.
When more than one output file is given, each has to be preceded
When more than one output file is given, each has to be preceded
by **-e** flag. The files are written one by one, in the specified order.
@@ -165,7 +165,7 @@ gramps(1) @VERSION@ gramps(1)
With or without the **-O** flag, there could be multiple imports, exports,
and actions specified further on the command line by using **-i** ,
and actions specified further on the command line by using **-i** ,
**-e** , and **-a** flags.
@@ -194,46 +194,46 @@ gramps(1) @VERSION@ gramps(1)
**EXAMPLES**
To open an existing family tree and import an xml file into it, one
may type:
**gramps -O** *'My Family Tree'* **-i** *~/db3.gramps*
The above changes the opened family tree, to do the same, but import
both in a temporary family tree and start an interactive session, one
may type:
**gramps -i** *'My Family Tree'* **-i** *~/db3.gramps*
To import four databases (whose formats can be determined from their
names) and then check the resulting database for errors, one may type:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**-i** *file4.wft* **-a** *check*
To explicitly specify the formats in the above example, append file
names with appropriate **-f** options:
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
**-f** *wft* **-a** *check*
To record the database resulting from all imports, supply **-e** flag (use
**-f** if the filename does not allow gramps to guess the format):
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
**-f** *gramps-pkg*
To import three databases and start interactive gramps session with the
result:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
To run the Verify tool from the commandline and output the result to
stdout:
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
Finally, to start normal interactive session type:
**gramps**
@@ -257,20 +257,20 @@ gramps(1) @VERSION@ gramps(1)
modification of the main program.
In addition to generating direct printer output, report generators also
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
or *LaTeX* to allow the users to modify the format to suit their needs.
**KNOWN BUGS AND LIMITATIONS**
**FILES**
*${PREFIX}/bin/gramps*
*${PREFIX}/lib/python3/dist-packages/gramps/*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*
@@ -290,8 +290,8 @@ gramps(1) @VERSION@ gramps(1)
The user documentation is available through standard web browser
in the form of Gramps Manual.
The developer documentation can be found on the
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
The developer documentation can be found on the
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
portal.
+32 -31
View File
@@ -13,10 +13,11 @@ gramps(1) @VERSION@ gramps(1)
**SYNOPSIS**
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*]
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FICHIER*]
[**-e** | **--export=** *FICHIER*] [**--remove=** *FAMILY_TREE_PATTERN*]
[**-a** | **--action=** *ACTION* [*-p* | **--options=** *CHAÎNE
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
[**-e** | **--export=** *FICHIER* [**-f** | **--format=** *FORMAT*]]
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *CHAÎNE
OPTION*]] [*FICHIER*] [**--version**]
@@ -60,7 +61,7 @@ gramps(1) @VERSION@ gramps(1)
**geneweb** .
**-l**
**-l**
Imprime une liste des arbres familiaux disponibles.
@@ -91,11 +92,11 @@ gramps(1) @VERSION@ gramps(1)
**-e** , **--export=** *FICHIER*
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
*FICHIER* est le nom du fichier de sortie.
Quand plus d'un fichier doit être exporté, chacun doit être
Quand plus d'un fichier doit être exporté, chacun doit être
précédé par la commande **-e** . Ces fichiers sont importés dans le
même ordre.
@@ -120,7 +121,7 @@ gramps(1) @VERSION@ gramps(1)
**name=name**
Cette option est obligatoire, elle détermine quel rapport ou
outil sera utilisé. Si le name saisi ne correspond à aucun
outil sera utilisé. Si le name saisi ne correspond à aucun
module disponible, un message d'erreur sera ajouté.
**show=all**
@@ -183,54 +184,54 @@ gramps(1) @VERSION@ gramps(1)
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
mémorisées en *stdout* (si elles sont le fait de la manipulation par
gramps) ou en *stderr* (si elles ne sont pas le fait d'une manipulation).
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
les messages et les erreurs dans les fichiers.
**EXEMPLES**
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
saisir:
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
dans un arbre familial temporaire et démarrer une session interactive,
on peut saisir :
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
Lecture de quatre bases de données dont les formats peuvent être
devinés d'après les noms, puis vérification des données:
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
**-i** *file4.wft* **-a** *check*
Si vous voulez préciser lesformats de fichiers dans l'exemple ci-
dessus, complétez les noms de fichiers par les options -f appropriées:
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
**-f** *wft* **-a** *check*
Pour enregistrer le résultat des lectures, donnez l'option **-e**
Pour enregistrer le résultat des lectures, donnez l'option **-e**
(utiliser -f si le nom de fichier ne permet pas à gramps de deviner le
format):
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
**-f** *gramps-pkg*
Pour lire trois ensembles de données puis lancer une session
Pour lire trois ensembles de données puis lancer une session
interactive de gramps sur le tout :
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
Pour lancer l'outil de vérification de la base de données depuis la
ligne de commande et obtenir le résultat :
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
Enfin, pour lancer une session interactive normale, entrer :
Enfin, pour lancer une session interactive normale, entrer :
**gramps**
@@ -264,11 +265,11 @@ gramps(1) @VERSION@ gramps(1)
**FICHIERS**
*${PREFIX}/bin/gramps*
*${PREFIX}/lib/python3/dist-packages/gramps/*
*${PREFIX}/lib/python/dist-packages/gramps/*
*${PREFIX}/share/*
*${HOME}/.gramps*
+20 -14
View File
@@ -1,8 +1,6 @@
.\" Man page generated from reStructuredText.
.
.TH FRENCH "" "" ""
.TH "GRAMPS" "1" "09 March 2015" "4.2" "Gramps"
.SH NAME
French \-
gramps \- Gramps Documentation
.
.nr rst2man-indent-level 0
.
@@ -30,6 +28,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.\" Man page generated from reStructeredText.
.
.sp
gramps(1) @VERSION@ gramps(1)
.INDENT 0.0
@@ -42,10 +42,11 @@ données généalogiques)
.TP
.B \fBSYNOPSIS\fP
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP]
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFICHIER\fP]
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fI...\fP]
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE
OPTION\fP]] [\fIFICHIER\fP] [\fB\-\-version\fP]
.TP
.B \fBDESCRIPTION\fP
@@ -75,16 +76,16 @@ Le format spécifique du \fIFICHIER\fP est précédé par les arguments
alors le format sera celui de l\(aqextension ou du type\-MIME.
.sp
Les formats de sortie disponibles sont \fBgramps\-xml\fP (deviné si
\fIFICHIER\fP se termine par \fB\&.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
termine par \fB\&.ged\fP ), ou tout autre fichier d\(aqexportation
\fIFICHIER\fP se termine par \fB.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
termine par \fB.ged\fP ), ou tout autre fichier d\(aqexportation
disponible dans le système de plugin Gramps.
.sp
Les formats disponibles pour l\(aqimportation sont \fBgrdb\fP ,
\fBgramps\-xml\fP , \fBgedcom\fP , \fBgramps\-pkg\fP (deviné si \fIFICHIER\fP se termine par
\fB\&.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB\&.gw\fP ).
\fB.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB.gw\fP ).
.sp
Les formats disponibles pour l\(aqexportation sont \fBgramps\-xml\fP , \fBged
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB\&.wft\fP ),
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB.wft\fP ),
\fBgeneweb\fP .
.TP
.B \fB\-l\fP
@@ -192,7 +193,7 @@ fenêtre et demarrera avec une base vide, puisqu\(aqil n\(aqy a pas données.
.sp
Si aucune option \fB\-e\fP ou \fB\-a\fP n\(aqest donnée, gramps lancera sa propre
fenêtre et démarrera avec la base de données issue de tout les imports.
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP\&.
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP.
.sp
Les erreurs rencontrées lors d\(aqimportation, d\(aqexportation, ou d\(aqaction, seront
mémorisées en \fIstdout\fP (si elles sont le fait de la manipulation par
@@ -301,7 +302,7 @@ besoins
.INDENT 3.5
\fI${PREFIX}/bin/gramps\fP
.sp
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
.sp
\fI${PREFIX}/share/\fP
.sp
@@ -333,5 +334,10 @@ La documentation pour développeur est disponible sur le site
.UNINDENT
.sp
gramps(1) @VERSION@ gramps(1)
.SH AUTHOR
Jerome Rapinat
.SH COPYRIGHT
2015, Gramps project
.\" Generated by docutils manpage writer.
.\"
.

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