Compare commits
312 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
cf88fef1e8 | ||
|
94f28daf03 | ||
|
bd8c08596b | ||
|
d43ff61913 | ||
|
307bed5e44 | ||
|
e7cf8fe70c | ||
|
c390a0f490 | ||
|
8cc86bd153 | ||
|
2cd23356b4 | ||
|
03579aa4a1 | ||
|
7f9686ba8d | ||
|
f827fff712 | ||
|
27648255c0 | ||
|
f0b022564b | ||
|
2727044bc7 | ||
|
04bc04896b | ||
|
44d8c31bc9 | ||
|
1c4e91e891 | ||
|
09caa90530 | ||
|
68a0a0d087 | ||
|
e5701e9641 | ||
|
e2e75559c2 | ||
|
c489c8ec34 | ||
|
8e11d1bd64 | ||
|
5c71a35aea | ||
|
a99196dde5 | ||
|
7c71e098f1 | ||
|
db04225e83 | ||
|
40686d50ef | ||
|
66b0d389c7 | ||
|
4ff5d6460e | ||
|
77c530f5ed | ||
|
db138e646c | ||
|
bef5ed6386 | ||
|
dadb588d83 | ||
|
55a20ab1e3 | ||
|
71e2077805 | ||
|
b151f17117 | ||
|
3b5e3cbe6e | ||
|
55c7becb68 | ||
|
643ffcb479 | ||
|
218ea80d2b | ||
|
2d27ada429 | ||
|
9cf8a940f9 | ||
|
80ace16550 | ||
|
4ffce0b915 | ||
|
a16bc2de9c | ||
|
ce9723eec8 | ||
|
24df17cc2f | ||
|
6b50f932db | ||
|
3781e75d60 | ||
|
4396a09081 | ||
|
3e19b099f8 | ||
|
254a605543 | ||
|
f16772c393 | ||
|
415a843be9 | ||
|
82646d0d67 | ||
|
db352c5c4c | ||
|
ac62a978e0 | ||
|
d0a83dd39c | ||
|
53b415c0d0 | ||
|
2f4767fd6f | ||
|
d230948c6a | ||
|
a8de78c452 | ||
|
0e3c3cdbdd | ||
|
bff873f174 | ||
|
417d379726 | ||
|
88115561cc | ||
|
563ffe22b4 | ||
|
3f70f716c4 | ||
|
25fbf57219 | ||
|
eebcd5c8a2 | ||
|
20917e4b09 | ||
|
a166ed9ca4 | ||
|
492a40b5b4 | ||
|
516d716b83 | ||
|
de8efc9d12 | ||
|
079abd1df3 | ||
|
42a56bf31b | ||
|
236261e2db | ||
|
7fa12faed2 | ||
|
032051c093 | ||
|
ad961132eb | ||
|
c248767c1d | ||
|
8497e8c4b2 | ||
|
05da780166 | ||
|
03ab81e2d1 | ||
|
205529f448 | ||
|
10c62800ef | ||
|
61625e2a9b | ||
|
b8b61521d8 | ||
|
a1402552e2 | ||
|
4722ce2e7f | ||
|
b86bbf44d1 | ||
|
49f53a1fe7 | ||
|
1c8cc6e33f | ||
|
040c9010d2 | ||
|
c9a19a5954 | ||
|
bda98e7b1e | ||
|
c035dd3df4 | ||
|
2de3ea43c3 | ||
|
939eb423a6 | ||
|
0fe8bd5e4a | ||
|
acb7f3cded | ||
|
d84109f435 | ||
|
e84bf70347 | ||
|
d6f7cfcd20 | ||
|
a9640f327f | ||
|
80be25adae | ||
|
1030d1627e | ||
|
d2ffb0484a | ||
|
7b6dede9ea | ||
|
e4061d605c | ||
|
4afc4933c2 | ||
|
14ed0c4d16 | ||
|
1a8c73212e | ||
|
18ef02d424 | ||
|
85b4c25d02 | ||
|
e0b44ff355 | ||
|
9a00d5533d | ||
|
d349f247ea | ||
|
f44e84f054 | ||
|
0a7b8fb6ee | ||
|
85914babdf | ||
|
448986875b | ||
|
b81f80bace | ||
|
12ed5deb24 | ||
|
e6d35b8cbd | ||
|
84055c01dc | ||
|
b475c47994 | ||
|
f9ebdaadc3 | ||
|
9478468977 | ||
|
01baffae32 | ||
|
4fd6b0f7c4 | ||
|
84318f6ee1 | ||
|
54fdf3ef8a | ||
|
9740e7fc0c | ||
|
b0b64b0b5c | ||
|
57ed1d7cb8 | ||
|
21e4d8e5ad | ||
|
3d249cfa01 | ||
|
9d858d7167 | ||
|
081b2a4ed2 | ||
|
49f7137577 | ||
|
8732b1e237 | ||
|
10f47d73ad | ||
|
778e87971f | ||
|
0e43df69fb | ||
|
7a98bc174c | ||
|
ba22fca9bc | ||
|
a1750394d7 | ||
|
7c763eb5f8 | ||
|
d1a81958a8 | ||
|
a7966a7a48 | ||
|
d4b8967036 | ||
|
597f1ee8c2 | ||
|
b8323d2132 | ||
|
b7a7bca282 | ||
|
447541e0b2 | ||
|
506d7e3160 | ||
|
4bbc0f74d4 | ||
|
8316e06853 | ||
|
1ac41d1287 | ||
|
4a64d306cc | ||
|
1c038db179 | ||
|
a868efdeb0 | ||
|
294e053212 | ||
|
457e7207c3 | ||
|
0701c0c0d0 | ||
|
433299beec | ||
|
3136b041a6 | ||
|
a2b31f8d55 | ||
|
4e9ea44ded | ||
|
353bb62523 | ||
|
ecb4c1d58e | ||
|
758bf61ae0 | ||
|
7c5234d333 | ||
|
8ca9a9cccf | ||
|
5e718ac0ca | ||
|
5a98e1a9b0 | ||
|
082b7c8940 | ||
|
c667cd5430 | ||
|
26560d0590 | ||
|
b62e0208c2 | ||
|
00ef7110bd | ||
|
607c23f546 | ||
|
e5e610d9b8 | ||
|
3c84e93b7a | ||
|
e196bf606f | ||
|
a79cc2996a | ||
|
3fba4f0ec0 | ||
|
b9a12c4ecf | ||
|
ed0ff156ee | ||
|
1fc35fd0cc | ||
|
1a8e08d80f | ||
|
7ec13cac24 | ||
|
63f4abfe47 | ||
|
ca65aa8b37 | ||
|
39beb81e59 | ||
|
c78a0958bc | ||
|
04b4489a34 | ||
|
9f05e33bc2 | ||
|
f867caf61e | ||
|
1ad6634888 | ||
|
9eacd472da | ||
|
7169784a4b | ||
|
6c965a0860 | ||
|
101d261bf5 | ||
|
0929f677ca | ||
|
08e1a88c27 | ||
|
66b051d3f0 | ||
|
42ce347ff5 | ||
|
78e5ed05fc | ||
|
27fdeb65d6 | ||
|
75470fd7ca | ||
|
4ffa3e8c49 | ||
|
82543486d0 | ||
|
9d419f3f5c | ||
|
c4bcf66e29 | ||
|
9cc216ed2e | ||
|
b67b060c8c | ||
|
a170243369 | ||
|
c8cf6377c6 | ||
|
74694b5eee | ||
|
76c8708a74 | ||
|
c1b7e8aa67 | ||
|
b584c0d450 | ||
|
2c672c4650 | ||
|
c72bac7012 | ||
|
fcab24ba20 | ||
|
6592a2e719 | ||
|
86bfff69a1 | ||
|
1537eed079 | ||
|
325cac8335 | ||
|
bf7d9c48fa | ||
|
2706bfb552 | ||
|
604e9ac9aa | ||
|
bcb9141273 | ||
|
df23a12132 | ||
|
166dace001 | ||
|
6f7f30f547 | ||
|
3b5eb5adf3 | ||
|
4141b7e34a | ||
|
fadb082afa | ||
|
c031eea046 | ||
|
5f722e4c6c | ||
|
a1085dac15 | ||
|
dc175ea1a1 | ||
|
1223a75e68 | ||
|
707edf3df0 | ||
|
076d514cd2 | ||
|
35c4236f27 | ||
|
baf368c049 | ||
|
ccd6c3143e | ||
|
c7ffa8d075 | ||
|
e8ba397f75 | ||
|
f21e23cd70 | ||
|
d16feb7265 | ||
|
6e25dd83f5 | ||
|
090721408b | ||
|
c9d12d4150 | ||
|
f4d6dbb64b | ||
|
ed284d44a5 | ||
|
7d849d39cf | ||
|
d220ea65f8 | ||
|
6df1e6bd32 | ||
|
d4df31abf3 | ||
|
bbefe30256 | ||
|
d0aa2c63fc | ||
|
7d98f08949 | ||
|
2c06392f57 | ||
|
8f1fca7fed | ||
|
85f425e8cf | ||
|
9d57c640c5 | ||
|
1a79077235 | ||
|
e3d524d18e | ||
|
9dec158e65 | ||
|
742f946970 | ||
|
87d92fc54f | ||
|
ec1a794648 | ||
|
fd3ca0348f | ||
|
d0d9e5b207 | ||
|
9d4e3a022b | ||
|
16a038d2be | ||
|
23f64a155b | ||
|
0e6b71eb6f | ||
|
8ceb80bc29 | ||
|
2578252d11 | ||
|
dd77bf74d5 | ||
|
26f028afb1 | ||
|
a68679766c | ||
|
582b6f7f80 | ||
|
9822b7d12e | ||
|
12ad7514f5 | ||
|
7909c352f1 | ||
|
28c1823062 | ||
|
26ca29b122 | ||
|
f7c4cddcc8 | ||
|
bfd7d804f2 | ||
|
79ed0c638b | ||
|
6a6e1cd73a | ||
|
098dc0a05c | ||
|
d8cd9b8d72 | ||
|
debedc57e9 | ||
|
3b2bb00706 | ||
|
7bbbafe377 | ||
|
0319dc7490 | ||
|
751b3d5a34 | ||
|
978c5055d8 | ||
|
76424b61f8 | ||
|
c2ee4b0ab9 | ||
|
20ca667b61 |
18
.gitattributes
vendored
@@ -1,18 +0,0 @@
|
||||
# Make Github recognise Gramps as a Python project,
|
||||
# by marking .sql files as text files!
|
||||
# See: https://github.com/github/linguist/issues/2462
|
||||
# https://github.com/github/linguist/blob/master/README.md
|
||||
*.sql linguist-language=txt
|
||||
|
||||
# Have Github ignore js vendored files.
|
||||
# https://github.com/gramps-project/gramps/tree/master/data/javascript
|
||||
#data/javascript/*.js linguist-vendored
|
||||
|
||||
# don't mess with line endings for test files
|
||||
*.vcs -text
|
||||
*.ged -text
|
||||
*.GED -text
|
||||
*.csv -text
|
||||
*.DEF -text
|
||||
*.IXI -text
|
||||
*.REM -text
|
9
.gitignore
vendored
@@ -8,7 +8,7 @@ dist/
|
||||
|
||||
# Gramps
|
||||
data/tips.xml
|
||||
data/holidays.xml
|
||||
gramps/plugins/lib/holidays.xml
|
||||
po/.intltool-merge-cache
|
||||
docs/_build/
|
||||
|
||||
@@ -18,10 +18,3 @@ tags
|
||||
|
||||
# Testing
|
||||
test/data
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Glade temp files
|
||||
*~
|
||||
|
28
.mailmap
@@ -1,28 +0,0 @@
|
||||
<benny.malengier@gramps-project.org> <benny.malengier@gmail.com>
|
||||
<doug.blank@gmail.com> <dsblank@bitbucket.org>
|
||||
<doug.blank@gmail.com> <dblank@cs.brynmawr.edu>
|
||||
<beernarrd@gmail.com> <beernarrd@users.sourceforge.net>
|
||||
<igal.shapira@gmail.com> <igalshapira@users.sourceforge.net>
|
||||
<romjerome@yahoo.fr> <romjerome@users.noreply.github.com>
|
||||
<jralls@ceridwen.us> <john@aeolus.local>
|
||||
<josip@pisoj.com> <bpisoj@gmail.com>
|
||||
Josip Pisoj <josip@pisoj.com>
|
||||
Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
<martin.hawlisch@gmx.de> <loshawlos@users.sourceforge.net>
|
||||
Matti Niemelä <matti.u.niemela@gmail.com> <niememat@gmail.com>
|
||||
<nick-h@gramps-project.org> <nick__hall@hotmail.com>
|
||||
<nick-h@gramps-project.org> <Nick-Hall@users.noreply.github.com>
|
||||
Ondrej Krč-Jediný <hou@centrum.sk>
|
||||
<hou@centrum.sk> <ondrisko@users.sourceforge.com>
|
||||
Pierre Bélissent <pierre.belissent@gmail.com>
|
||||
Serge Noiraud <Serge.Noiraud@free.fr>
|
||||
<Serge.Noiraud@free.fr> <serge.noiraud@free.fr>
|
||||
<Serge.Noiraud@free.fr> <serge.noiraud@laposte.net>
|
||||
Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
<zdenek.hatas@gmail.com> <zdenek.hatas@hp.com>
|
||||
<zdenek.hatas@gmail.com> <zenhas@users.sourceforge.net>
|
||||
<gerald@gkunzmann.de> <g.kunzmann@arcor.de>
|
||||
Tim G L Lyons <tim.g.lyons@gmail.com>
|
||||
<tim.g.lyons@gmail.com> <guy.linton@gmail.com>
|
||||
Elder Evans <elderamevans@gmail.com>
|
||||
|
378
.pylintrc
@@ -1,378 +0,0 @@
|
||||
[MASTER]
|
||||
|
||||
# Specify a configuration file.
|
||||
#rcfile=
|
||||
|
||||
# Python code to execute, usually for sys.path manipulation such as
|
||||
# pygtk.require().
|
||||
#init-hook=
|
||||
|
||||
# Add files or directories to the blacklist. They should be base names, not
|
||||
# paths.
|
||||
ignore=CVS
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# List of plugins (as comma separated values of python modules names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
# Use multiple processes to speed up Pylint.
|
||||
jobs=1
|
||||
|
||||
# Allow loading of arbitrary C extensions. Extensions are imported into the
|
||||
# active Python interpreter and may run arbitrary code.
|
||||
unsafe-load-any-extension=no
|
||||
|
||||
# A comma-separated list of package or module names from where C extensions may
|
||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||
# run arbitrary code
|
||||
extension-pkg-whitelist=
|
||||
|
||||
# Allow optimization of some AST trees. This will activate a peephole AST
|
||||
# optimizer, which will apply various small optimizations. For instance, it can
|
||||
# be used to obtain the result of joining multiple strings with the addition
|
||||
# operator. Joining a lot of strings can lead to a maximum recursion error in
|
||||
# Pylint and this flag can prevent that. It has one side effect, the resulting
|
||||
# AST will be different than the one from reality.
|
||||
optimize-ast=no
|
||||
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
|
||||
# Only show warnings with the listed confidence levels. Leave empty to show
|
||||
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
|
||||
confidence=
|
||||
|
||||
# Enable the message, report, category or checker with the given id(s). You can
|
||||
# either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time. See also the "--disable" option for examples.
|
||||
#enable=
|
||||
|
||||
# Disable the message, report, category or checker with the given id(s). You
|
||||
# can either give multiple identifiers separated by comma (,) or put this
|
||||
# option multiple times (only on the command line, not in the configuration
|
||||
# file where it should appear only once).You can also use "--disable=all" to
|
||||
# disable everything first and then reenable specific checks. For example, if
|
||||
# you want to run only the similarities checker, you can use "--disable=all
|
||||
# --enable=similarities". If you want to run only the classes checker, but have
|
||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||
# --disable=W"
|
||||
disable=suppressed-message,intern-builtin,round-builtin,unicode-builtin,range-builtin-not-iterating,long-builtin,basestring-builtin,setslice-method,print-statement,reload-builtin,metaclass-assignment,raising-string,next-method-called,import-star-module-level,xrange-builtin,getslice-method,zip-builtin-not-iterating,reduce-builtin,dict-iter-method,delslice-method,using-cmp-argument,hex-method,buffer-builtin,old-ne-operator,nonzero-method,backtick,parameter-unpacking,indexing-exception,file-builtin,filter-builtin-not-iterating,raw_input-builtin,execfile-builtin,oct-method,cmp-method,coerce-builtin,long-suffix,cmp-builtin,input-builtin,dict-view-method,standarderror-builtin,apply-builtin,old-raise-syntax,unichr-builtin,old-division,coerce-method,unpacking-in-except,useless-suppression,no-absolute-import,map-builtin-not-iterating,old-octal-literal
|
||||
|
||||
|
||||
[REPORTS]
|
||||
|
||||
# Set the output format. Available formats are text, parseable, colorized, msvs
|
||||
# (visual studio) and html. You can also give a reporter class, eg
|
||||
# mypackage.mymodule.MyReporterClass.
|
||||
output-format=text
|
||||
|
||||
# Put messages in a separate file for each module / package specified on the
|
||||
# command line instead of printing them on stdout. Reports (if any) will be
|
||||
# written in a file name "pylint_global.[txt|html]".
|
||||
files-output=no
|
||||
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=yes
|
||||
|
||||
# Python expression which should return a note less than 10 (10 is the highest
|
||||
# note). You have access to the variables errors warning, statement which
|
||||
# respectively contain the number of errors / warnings messages and the total
|
||||
# number of statements analyzed. This is used by the global evaluation report
|
||||
# (RP0004).
|
||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||
|
||||
# Template used to display messages. This is a python new-style format string
|
||||
# used to format the message information. See doc for all details
|
||||
#msg-template=
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
# List of builtins function names that should not be used, separated by a comma
|
||||
bad-functions=map,filter
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_,db
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# Colon-delimited sets of names that determine each other's naming style when
|
||||
# the name regexes allow several styles.
|
||||
name-group=
|
||||
|
||||
# Include a hint for the correct naming format with invalid-name
|
||||
include-naming-hint=no
|
||||
|
||||
# Regular expression matching correct argument names
|
||||
argument-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for argument names
|
||||
argument-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Naming hint for module names
|
||||
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Regular expression matching correct class attribute names
|
||||
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Naming hint for class attribute names
|
||||
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Regular expression matching correct function names
|
||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for function names
|
||||
function-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct inline iteration names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Naming hint for inline iteration names
|
||||
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Regular expression matching correct constant names
|
||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Naming hint for constant names
|
||||
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Regular expression matching correct method names
|
||||
method-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for method names
|
||||
method-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct class names
|
||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Naming hint for class names
|
||||
class-name-hint=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Regular expression matching correct variable names
|
||||
variable-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for variable names
|
||||
variable-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct attribute names
|
||||
attr-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for attribute names
|
||||
attr-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match function or class names that do
|
||||
# not require a docstring.
|
||||
no-docstring-rgx=^_
|
||||
|
||||
# Minimum line length for functions/classes that require docstrings, shorter
|
||||
# ones are exempt.
|
||||
docstring-min-length=-1
|
||||
|
||||
|
||||
[ELIF]
|
||||
|
||||
# Maximum number of nested blocks for function / method body
|
||||
max-nested-blocks=5
|
||||
|
||||
|
||||
[LOGGING]
|
||||
|
||||
# Logging modules to check that the string format arguments are in logging
|
||||
# function parameter format
|
||||
logging-modules=logging
|
||||
|
||||
|
||||
[SPELLING]
|
||||
|
||||
# Spelling dictionary name. Available dictionaries: none. To make it working
|
||||
# install python-enchant package.
|
||||
spelling-dict=
|
||||
|
||||
# List of comma separated words that should not be checked.
|
||||
spelling-ignore-words=
|
||||
|
||||
# A path to a file that contains private dictionary; one word per line.
|
||||
spelling-private-dict-file=
|
||||
|
||||
# Tells whether to store unknown words to indicated private dictionary in
|
||||
# --spelling-private-dict-file option instead of raising a message.
|
||||
spelling-store-unknown-words=no
|
||||
|
||||
|
||||
[MISCELLANEOUS]
|
||||
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[TYPECHECK]
|
||||
|
||||
# Tells whether missing members accessed in mixin class should be ignored. A
|
||||
# mixin class is detected if its name ends with "mixin" (case insensitive).
|
||||
ignore-mixin-members=yes
|
||||
|
||||
# List of module names for which member attributes should not be checked
|
||||
# (useful for modules/projects where namespaces are manipulated during runtime
|
||||
# and thus existing member attributes cannot be deduced by static analysis. It
|
||||
# supports qualified module names, as well as Unix pattern matching.
|
||||
ignored-modules=
|
||||
|
||||
# List of classes names for which member attributes should not be checked
|
||||
# (useful for classes with attributes dynamically set). This supports can work
|
||||
# with qualified names.
|
||||
ignored-classes=
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
||||
# expressions are accepted.
|
||||
generated-members=
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=4
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
# Ignore imports when computing similarities.
|
||||
ignore-imports=no
|
||||
|
||||
|
||||
[FORMAT]
|
||||
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=80
|
||||
|
||||
# Regexp for a line that is allowed to be longer than the limit.
|
||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
||||
|
||||
# Allow the body of an if to be on the same line as the test if there is no
|
||||
# else.
|
||||
single-line-if-stmt=no
|
||||
|
||||
# List of optional constructs for which whitespace checking is disabled. `dict-
|
||||
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
|
||||
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
|
||||
# `empty-line` allows space-only lines.
|
||||
no-space-check=trailing-comma,dict-separator
|
||||
|
||||
# Maximum number of lines in a module
|
||||
max-module-lines=1000
|
||||
|
||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||
# tab).
|
||||
indent-string=' '
|
||||
|
||||
# Number of spaces of indent required inside a hanging or continued line.
|
||||
indent-after-paren=4
|
||||
|
||||
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
|
||||
expected-line-ending-format=
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
# Tells whether we should check for unused import in __init__ files.
|
||||
init-import=no
|
||||
|
||||
# A regular expression matching the name of dummy variables (i.e. expectedly
|
||||
# not used).
|
||||
dummy-variables-rgx=_$|dummy
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=
|
||||
|
||||
# List of strings which can identify a callback function by name. A callback
|
||||
# name must start or end with one of those strings.
|
||||
callbacks=cb_,_cb
|
||||
|
||||
|
||||
[CLASSES]
|
||||
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
# List of valid names for the first argument in a class method.
|
||||
valid-classmethod-first-arg=cls
|
||||
|
||||
# List of valid names for the first argument in a metaclass class method.
|
||||
valid-metaclass-classmethod-first-arg=mcs
|
||||
|
||||
# List of member names, which should be excluded from the protected access
|
||||
# warning.
|
||||
exclude-protected=_asdict,_fields,_replace,_source,_make
|
||||
|
||||
|
||||
[IMPORTS]
|
||||
|
||||
# Deprecated modules which should not be used, separated by a comma
|
||||
deprecated-modules=optparse
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# given file (report RP0402 must not be disabled)
|
||||
import-graph=
|
||||
|
||||
# Create a graph of external dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of internal dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
int-import-graph=
|
||||
|
||||
|
||||
[DESIGN]
|
||||
|
||||
# Maximum number of arguments for function / method
|
||||
max-args=5
|
||||
|
||||
# Argument names that match this expression will be ignored. Default to name
|
||||
# with leading underscore
|
||||
ignored-argument-names=_.*
|
||||
|
||||
# Maximum number of locals for function / method body
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of return / yield for function / method body
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of branch for function / method body
|
||||
max-branches=12
|
||||
|
||||
# Maximum number of statements in function / method body
|
||||
max-statements=50
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=7
|
||||
|
||||
# Minimum number of public methods for a class (see R0903).
|
||||
min-public-methods=2
|
||||
|
||||
# Maximum number of public methods for a class (see R0904).
|
||||
max-public-methods=20
|
||||
|
||||
# Maximum number of boolean expressions in a if statement
|
||||
max-bool-expr=5
|
||||
|
||||
|
||||
[EXCEPTIONS]
|
||||
|
||||
# Exceptions that will emit a warning when being caught. Defaults to
|
||||
# "Exception"
|
||||
overgeneral-exceptions=Exception
|
129
.travis.yml
@@ -1,129 +0,0 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2015-2015 Doug Blank
|
||||
# Copyright (C) 2016 DaAwesomeP
|
||||
# Copyright (C) 2016 QuLogic
|
||||
# Copyright (C) 2016 Tim G L Lyons
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# After changing this file, check it on:
|
||||
# http://lint.travis-ci.org/
|
||||
|
||||
sudo: required
|
||||
dist: trusty
|
||||
language: python
|
||||
python:
|
||||
- 3.3 # This is irrelevant, because the virtualenv is not used at all
|
||||
|
||||
# FIXME: The minimum requirement for Gramps is Python 3.2, so a test environment
|
||||
# for Python 3.2 should be added to this environment which is Python 3.3. It
|
||||
# will not be possible to run coverage under Python 3.2, because coverage is
|
||||
# Python 3.3 (or above) only.
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- gir1.2-pango-1.0
|
||||
- gir1.2-gtk-3.0
|
||||
- xdg-utils
|
||||
- librsvg2-common
|
||||
- libglib2.0-dev
|
||||
- intltool
|
||||
# - python3-gobject Provided by python3-gi
|
||||
- python3-gi
|
||||
- python3-cairo
|
||||
- python3-gi-cairo
|
||||
- python3-bsddb3
|
||||
- python3-dev
|
||||
- python3-nose
|
||||
- python3-mock
|
||||
- python3-pyicu
|
||||
- python3-coverage
|
||||
- python3-jsonschema
|
||||
# lxml dependencies. for merge_ref_test to work
|
||||
# - libxml2-dev
|
||||
# - libxslt1-dev
|
||||
- libxml2-utils
|
||||
- python3-lxml
|
||||
- python-libxml2
|
||||
# ubuntu 14.04 requires this in addition to libxml2-dev and
|
||||
# libxslt1-dev for compiling lxml.
|
||||
# https://github.com/deanmalmgren/textract/issues/19
|
||||
- zlib1g-dev
|
||||
|
||||
before_install:
|
||||
|
||||
install:
|
||||
# The working directory is set to /home/travis/build/gramps-project/gramps
|
||||
# by the automatic git checkout.
|
||||
|
||||
# Download Sean Ross-Ross's Pure Python module containing a framework to
|
||||
# manipulate and analyze python ast<73>s and bytecode. This is loaded to
|
||||
# /home/travis/build/gramps-project/gramps/meta
|
||||
# FIXME: This should be loaded from the release directory at
|
||||
# https://pypi.python.org/pypi/meta
|
||||
- git clone -b master https://github.com/srossross/meta
|
||||
|
||||
# Build Gramps package. This seems to copy everything to
|
||||
# /home/travis/build/scripts-3.3
|
||||
- python setup.py build
|
||||
|
||||
before_script:
|
||||
# Create the Gramps database directory.
|
||||
- mkdir -p ~/.gramps/grampsdb/
|
||||
# set PYTHONPATH so the directly installed module (meta) is picked up from
|
||||
# /home/travis/build/gramps-project/gramps/meta
|
||||
- export PYTHONPATH=meta
|
||||
# set module exclusions. --exclude=TestUser because of older version of mock
|
||||
# without configure_mock
|
||||
- export EXCLUDE="--exclude=TestcaseGenerator"
|
||||
# --exclude=merge_ref_test"
|
||||
# set GRAMPS_RESOURCES for locale, data,image and documentation
|
||||
- export GRAMPS_RESOURCES=.
|
||||
# Install addons
|
||||
- mkdir -p ~/.gramps/gramps50/plugins/
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps50/download/CliMerge.addon.tgz
|
||||
- tar -C ~/.gramps/gramps50/plugins -xzf CliMerge.addon.tgz
|
||||
- wget https://github.com/gramps-project/addons/raw/master/gramps50/download/ExportRaw.addon.tgz
|
||||
- tar -C ~/.gramps/gramps50/plugins -xzf ExportRaw.addon.tgz
|
||||
|
||||
script:
|
||||
# Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
|
||||
# from /usr/bin. Use libraries from /usr/lib/python3.4,
|
||||
# /usr/local/lib/python3.4/dist-packages and /usr/lib/python3/dist-packages
|
||||
- nosetests3 --nologcapture --with-coverage --cover-package=gramps $EXCLUDE
|
||||
gramps
|
||||
# FIXME: This should have run from the current directory, rather than from
|
||||
# gramps, because there is some test code in that directory.
|
||||
|
||||
# give an error for any trailing whitespace
|
||||
- if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
|
||||
echo "ERROR - Trailing whitespace found in source file(s)";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
after_success:
|
||||
# apt-get installs python3-coverage, but codecov only invokes coverage, so make
|
||||
# a link
|
||||
- sudo ln /usr/bin/python3-coverage /usr/bin/coverage
|
||||
|
||||
# We have to use the bash script because the apt-get coverage does not install
|
||||
# codecov. If we used pip to install codecov, it would run inside the
|
||||
# virtualenv, and that doesn't work. Change the path to ensure that codecov
|
||||
# picks up coverage from /usr/bin, rather than from
|
||||
# /home/travis/virtualenv/python3.3.6/bin/
|
||||
- PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)
|
3
AUTHORS
@@ -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
CONTRIBUTING
@@ -1,12 +0,0 @@
|
||||
See developer documentation at:
|
||||
https://gramps-project.org/wiki/index.php?title=Portal:Developers
|
||||
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_patchfile
|
||||
https://gramps-project.org/wiki/index.php?title=Brief_introduction_to_Git#Making_a_PR
|
||||
|
||||
If you are interested in translating:
|
||||
* The Gramps program to your language see:
|
||||
https://gramps-project.org/wiki/index.php?title=Translating_Gramps
|
||||
https://gramps-project.org/wiki/index.php?title=Portal:Translators
|
||||
|
||||
* The Gramps user manual to your language see:
|
||||
https://gramps-project.org/wiki/index.php?title=Translating_the_Gramps_User_manual
|
527
ChangeLog
@@ -1,527 +0,0 @@
|
||||
2019-08-08 prculley <paulr2787@gmail.com>
|
||||
|
||||
* AUTHORS, ChangeLog, FAQ, NEWS, po/ChangeLog, po/gramps.pot:
|
||||
Prepare for Release 5.0.2
|
||||
|
||||
2019-08-08 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/plug/_gramplet.py: Fix some Gramplets not updating
|
||||
during tree changes after db change. (#865) Fixes #11234
|
||||
|
||||
2019-08-08 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/gramplet/events.py: Fix Events Grampslet for bad
|
||||
sort order on dates/ages (#867) Fixes #7616
|
||||
|
||||
2019-08-08 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/displaytabs/backreflist.py,
|
||||
gramps/gui/editors/displaytabs/backrefmodel.py: Fix References Tab
|
||||
to update on Deletes of items when editor is open (#864) Fixes #11231
|
||||
|
||||
2019-08-08 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* data/tests/imp_notetest_dfs.gramps,
|
||||
gramps/plugins/lib/libgedcom.py: Fix GEDCOM import for better
|
||||
support of TMG (#861) Fixes #11224
|
||||
|
||||
2019-08-07 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/__init__.py: Fix Edit Link 'New' button to work
|
||||
(#863) Fixes #11225
|
||||
|
||||
2019-08-07 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* data/tests/exp_sample_ged.ged, data/tests/imp_sample.ged,
|
||||
data/tests/imp_sample.gramps,
|
||||
gramps/plugins/export/exportgedcom.py,
|
||||
gramps/plugins/lib/libgedcom.py: Fix GEDCOM importer to properly
|
||||
handle multiple surnames per 5.5.1 (#862) Fixes #11228
|
||||
|
||||
2019-08-01 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/plugins/webreport/common.py,
|
||||
gramps/plugins/webreport/place.py: Narrative web: Sort problem with
|
||||
places. (#854) * Narrative web: Sort problem with places. Fixes #10868. Places list is not sorted depending on the selected language. If you start gramps in english or another language then try to
|
||||
generated a narrative web report in another language, the navigation
|
||||
alphabet is incorrect. This is true for the place list and the
|
||||
person list. The problem was related to pyICU. * Narrative web: some pylint improvement.
|
||||
|
||||
2019-08-01 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/navigator.py, gramps/gui/viewmanager.py: Fix Navigator
|
||||
sidebar so can change view type with proper resize (#853) Fixes #6422, #11164
|
||||
|
||||
2019-07-31 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/views/treemodels/flatbasemodel.py: fix crash when using
|
||||
sidebar filter and merging in another view (#858) Fixes #11089, #11064, #11134
|
||||
|
||||
2019-07-31 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/drawreport/ancestortree.py,
|
||||
gramps/plugins/lib/librecurse.py: Fix AncestorTree so add siblings
|
||||
to center person works (#852) Fixes #11215
|
||||
|
||||
2019-07-31 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/config.py, gramps/gen/plug/docgen/graphdoc.py,
|
||||
gramps/grampsapp.py, gramps/gui/configure.py: Fix graphs on Windows
|
||||
for font selection not working (#849) Fixes #11212
|
||||
|
||||
2019-07-31 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/db/dbapi/dbapi.py: Fix dbapi reindex_reference_maps
|
||||
tool to properly close transaction (#847) Fixes #11195
|
||||
|
||||
2019-07-10 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/widgets/selectionwidget.py: Fix zoom via mouse wheel in
|
||||
media event editor selectionwidget (#835) also fixes zooming with scroll bars always present Fixes #11198
|
||||
|
||||
2019-03-20 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2019-06-14 Mattkmmr <49940207+Mattkmmr@users.noreply.github.com>
|
||||
|
||||
* gramps/plugins/gramplet/metadataviewer.py: Fix metadataviewer.py
|
||||
(#823) Fix so that metadata is actually detected and displayed (signal was
|
||||
not getting detected).
|
||||
|
||||
2019-06-12 niememat <niememat@gmail.com>
|
||||
|
||||
* po/fi.po: Update finnish translation
|
||||
|
||||
2019-06-11 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps.modules: Fix graphviz and exiv2 download URLs.
|
||||
|
||||
2019-06-11 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps.modules: Update dependency versions and download paths.
|
||||
|
||||
2019-06-10 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/gen/utils/place.py, gramps/gen/utils/test/place_test.py,
|
||||
gramps/plugins/view/geoplaces.py: Avoid comma in a lat/lon entry
|
||||
field. (#812) * Avoid comma in a lat/lon entry field. * Be more precise on the tooltip text. * conv_lat_lon should not accept comma in lat/lon * Tests failed with comma in lat/lon * geoplaces fails to center if bad lat/lon
|
||||
|
||||
2019-06-10 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/gui/editors/displaytabs/surnametab.py,
|
||||
gramps/gui/widgets/monitoredwidgets.py: Avoid invalid characters in
|
||||
the entry field (#811) In this patch: 1 - If you copy/paste strings from another application, you can add CR, LF, TAB and other special characters. I remove
|
||||
them. 2 - suppress all leading and trailing spaces for these
|
||||
entry field.
|
||||
|
||||
2019-06-10 milotype <43657314+milotype@users.noreply.github.com>
|
||||
|
||||
* po/hr.po: Update Croatian translation (#824)
|
||||
|
||||
2019-06-09 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/displaystate.py, gramps/gui/views/listview.py: Fix
|
||||
crash for multiple deletes in one transaction (#814) Fixes #11117
|
||||
|
||||
2019-06-10 Ed Bennett <pyedward@swansea.ac.uk>
|
||||
|
||||
* gramps/gen/relationship.py, po/ar.po, po/bg.po, po/br.po,
|
||||
po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/en_GB.po,
|
||||
po/eo.po, po/es.po, po/fi.po, po/fr.po, po/ga.po, po/he.po,
|
||||
po/hr.po, po/hu.po, po/is.po, po/it.po, po/ja.po, po/lt.po,
|
||||
po/mk.po, po/nb.po, po/nl.po, po/nn.po, po/pl.po, po/pt_BR.po,
|
||||
po/pt_PT.po, po/ro.po, po/ru.po, po/sk.po, po/sl.po, po/sq.po,
|
||||
po/sr.po, po/sr_Latn.po, po/sv.po, po/ta.po, po/tr.po, po/uk.po,
|
||||
po/vi.po, po/zh_CN.po, po/zh_HK.po, po/zh_TW.po: Adjust translation
|
||||
strings for unmarried partners to give correct text in English
|
||||
(#818) Fixes #11109
|
||||
|
||||
2019-05-07 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps.modules: Disable vala for gexiv2, it breaks
|
||||
introspection.
|
||||
|
||||
2019-01-05 caigner <github@sys-admin.at>
|
||||
|
||||
* gramps/gui/views/navigationview.py, po/ar.po, po/bg.po, po/br.po,
|
||||
po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/en_GB.po,
|
||||
po/eo.po, po/es.po, po/fi.po, po/fr.po, po/ga.po, po/gramps.pot,
|
||||
po/he.po, po/hr.po, po/hu.po, po/is.po, po/it.po, po/ja.po,
|
||||
po/lt.po, po/mk.po, po/nb.po, po/nl.po, po/nn.po, po/pl.po,
|
||||
po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po, po/sk.po, po/sl.po,
|
||||
po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po, po/ta.po, po/tr.po,
|
||||
po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po, po/zh_TW.po: changed
|
||||
'Edit ->Set Home Person' to 'Edit -> Set Home Person'
|
||||
|
||||
2019-04-14 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: typo on french translation
|
||||
|
||||
2019-04-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/lib/libgedcom.py: Fix failure after Gedcom import
|
||||
if missing objects were found (#807) Fixes #11082
|
||||
|
||||
2019-03-26 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* gramps/gen/utils/maclocale.py: [maclocale] Fix none type has no
|
||||
len(). Fixes #11075
|
||||
|
||||
2019-03-17 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* data/tests/imp_sample.gramps, gramps/plugins/lib/libgedcom.py: Fix
|
||||
Gedcom import so it doesn't create completely empty Birth events
|
||||
(#799) Fixes #10145 Note: a completely empty birth event is removed by Check and Repair;
|
||||
this is wrong in that sometimes we know a person is born, but not
|
||||
date/place. In Gedcom this is indicated by "1 BIRT Y" lines. So this PR adds a description to the birth event. This is not an
|
||||
issue for other event types, the C&R tool sees the non-default type
|
||||
and leaves it alone, but birth is the default type.
|
||||
|
||||
2019-03-17 milotype <43657314+milotype@users.noreply.github.com>
|
||||
|
||||
* po/hr.po: Update Croatian translation (#803) update with current maint50 pot file
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/view/relview.py: Fix Relationship view so ages are
|
||||
according to Preferences (#798) Fixes #11040
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/displaytabs/personeventembedlist.py: Fix Person
|
||||
Editor Events to properly update during external changes (#797) like Event delete or update. Fixes #11051 Looks like someone simply forgot to register the handles with the
|
||||
callman... I checked other similar cases and did not see any other issues.
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* data/tests/exp_sample_ged.ged,
|
||||
data/tests/imp_FTM_16dec2015a-mod1.gramps,
|
||||
data/tests/imp_MediaTest.gramps, data/tests/imp_sample.gramps,
|
||||
gramps/plugins/export/exportgedcom.py,
|
||||
gramps/plugins/lib/libgedcom.py: Gedcom fixes for mime and finding
|
||||
media (#795) * Fix Gedcom import/export for more comprehensive mime types Fixes #11041 * Fix Gedcom import to better find media files Issue #11041 * Fix Gedcom test files for media mime and error location message
|
||||
|
||||
2019-03-17 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/plugins/lib/maps/geography.py: Unhandled exception in
|
||||
Geography editor (#793) Fixes #11048 better pylint score remove unused code
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/filters/rules/person/_relationshippathbetween.py: Fix
|
||||
relationshippathbetween filter rule when parent is missing (#792) Fixes #11049 Another HandleError issue, this one hidden by the raw except. Filter
|
||||
rule just did not work if a family in the path had a missing parent.
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/plug/docgen/graphdoc.py: Fix Graphs that use graphdoc
|
||||
pdf via Ghostscript with multi-page (#791) for poor font rendering of some characters (thanks to Ken Sharp) Fixes #11047
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* example/gramps/data.gramps, example/gramps/example.gramps: Fix
|
||||
example gramps files so media is found (#785) Fixes #11015 On Windows the location of the example files is "c:\program
|
||||
files\grampsaio64-5.0.1\share\doc\gramps\example\gramps". On my Ubuntu install from the .deb file these files are in
|
||||
"/usr/share/doc/gramps/example/gramps" Since the default GRAMPS_RESOURCES value for each system is the
|
||||
'share', to find the media files we need to append
|
||||
"/doc/gramps/example/gramps" to have the example files work
|
||||
properly.
|
||||
|
||||
2019-03-16 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/tool/finddupes.py: fix finddupes tool when run from
|
||||
Match Threshold screen again (#790) after merge. Avoids HandleError because potentials dict is not
|
||||
cleared. Fixes #11044
|
||||
|
||||
2019-01-17 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2019-02-27 Bernard Banko <beernarrd@gmail.com>
|
||||
|
||||
* po/sl.po: Slovenian translation correction
|
||||
|
||||
2019-02-16 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: update french translation
|
||||
|
||||
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: update (partial) french translation
|
||||
|
||||
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: merge with last template
|
||||
|
||||
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: bug 10841: Typos in the French translation
|
||||
|
||||
2019-02-14 syst<73>me <romjerome@users.noreply.github.com>
|
||||
|
||||
* po/fr.po: fix a typo
|
||||
|
||||
2019-02-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* data/tests/imp_MediaTest.gramps, gramps/plugins/lib/libgedcom.py:
|
||||
Fix Gedcom import for multiple notes on OBJE (MULTIMEDIA_LINK)
|
||||
(#782) Fixes #10277
|
||||
|
||||
2019-02-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/db/dbapi/dbapi.py,
|
||||
gramps/plugins/importer/importxml.py: Deal with SQLite db corrupted
|
||||
by None name mapping (#784) Fixes #11011
|
||||
|
||||
2019-02-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/importer/importxml.py: Fix XML import to add tags
|
||||
to Events, Sources, Places, Repos, Cits (#780) Fixes #11004
|
||||
|
||||
2019-02-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/displaytabs/eventembedlist.py,
|
||||
gramps/gui/editors/displaytabs/personrefembedlist.py,
|
||||
gramps/gui/editors/displaytabs/placerefembedlist.py,
|
||||
gramps/gui/editors/editcitation.py,
|
||||
gramps/gui/editors/editevent.py,
|
||||
gramps/gui/editors/editeventref.py,
|
||||
gramps/gui/editors/editfamily.py, gramps/gui/editors/editperson.py:
|
||||
Fix for delete of a ref'd primary obj while editing an added obj.
|
||||
(#779) Also fixed to update the ref'd obj on changes from outside the
|
||||
editor. Fixes #10999, #11000, #11001, #11002
|
||||
|
||||
2019-02-13 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/filters/_genericfilter.py,
|
||||
gramps/gui/views/treemodels/treebasemodel.py: Fix Place Tree view
|
||||
when using enclosed by sidebar filter (#764) the filter was incorrectly using a standard place cursor instead of
|
||||
the tree cursor. Fixes #10948
|
||||
|
||||
2019-02-10 Bernard Banko <beernarrd@gmail.com>
|
||||
|
||||
* po/sl.po: Slovenian language update
|
||||
|
||||
2019-02-10 Luigi Toscano <luigi.toscano@tiscali.it>
|
||||
|
||||
* po/it.po: Italian translation updates - restore few strings from the welcome Gramplet that got lost after the split of a messages in smaller messages; - fix few errors.
|
||||
|
||||
2019-02-10 Luigi Toscano <luigi.toscano@tiscali.it>
|
||||
|
||||
* po/it.po: Refresh the Italian po file
|
||||
|
||||
2019-02-02 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/editfamily.py: Fix EditFamily for adding a
|
||||
child to single parent family with (#777) Surname guessing set to combination. Fixes #10997
|
||||
|
||||
2019-01-22 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/drawreport/descendtree.py: Fix Descendent Tree
|
||||
report for crash when person has multiple (#773) families and one of them doesn't have a spouse. Fixes #10983, #10971, #10661
|
||||
|
||||
2019-01-22 Leonhaeuser <mirko@leonhaeuser.de>
|
||||
|
||||
* po/de.po: Update German translation
|
||||
|
||||
2019-01-21 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/db/dbapi/dbapi.py: Fix Name editor crash after
|
||||
clearing a group_as name on dbapi dbs (#771) Fixes #10981
|
||||
|
||||
2019-01-22 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/gen/merge/mergefamilyquery.py,
|
||||
gramps/gui/merge/mergecitation.py, gramps/gui/merge/mergeevent.py,
|
||||
gramps/gui/merge/mergefamily.py, gramps/gui/merge/mergemedia.py,
|
||||
gramps/gui/merge/mergenote.py, gramps/gui/merge/mergeperson.py,
|
||||
gramps/gui/merge/mergeplace.py,
|
||||
gramps/gui/merge/mergerepository.py,
|
||||
gramps/gui/merge/mergesource.py,
|
||||
gramps/plugins/test/db_undo_and_signals_test.py: We should stay on
|
||||
the selected item in list views: (#770) Fixes #10966 When we try to merge two objects, we should stay on the selected row
|
||||
in list views. This problem occurs for persons, families, events,
|
||||
places, sources, citations, repositories, media and notes. Another problem: In case we select the first family and select the
|
||||
gramps_id of the second family, the new gramps_id is ignored:
|
||||
problem in MergeFamilyQuery
|
||||
|
||||
2019-01-21 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/graph/gvrelgraph.py: Fix Relationship Graph; extra
|
||||
people when using filters & subgraphs (#769) subgraph option wasn't checking parents against filtered results Fixes #10947
|
||||
|
||||
2019-01-22 Christian Aigner <github@sys-admin.at>
|
||||
|
||||
* po/de.po: [German] Change Text on Settings -> Colour (#767) * Unified the labels. The overall appearance looks now a bit cleaner. * Fixed a grammatical bug (das -> dass)
|
||||
|
||||
2019-01-21 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/display/place.py: fix Place Format Editor file
|
||||
save/load for difficult names (#766) Fixes #10949
|
||||
|
||||
2019-01-22 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/plugins/graph/gvfamilylines.py: Not all place types appears
|
||||
on family lines Graph (#763)
|
||||
|
||||
2019-01-22 Christian Aigner <github@sys-admin.at>
|
||||
|
||||
* po/de.po: Corrections in 'Tip of Day'; changed 'Schlussnotizen' to
|
||||
'Quellennachweis' (#753)
|
||||
|
||||
2019-01-12 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2019-01-12 Sam Manzi <manzi.sam@gmail.com>
|
||||
|
||||
* gramps/plugins/tool/sortevents.py: Remember location of Sort
|
||||
Events Tool (#750) Issue #9795
|
||||
|
||||
2019-01-11 Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
|
||||
* po/cs.po: Update Czech translation
|
||||
|
||||
2019-01-05 Paul Culley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/editors/editmedia.py: Fix Media editor when using
|
||||
double click the preview of added media (#752) Fixes #10923
|
||||
|
||||
2019-01-05 Leonhaeuser <mirko@leonhaeuser.de>
|
||||
|
||||
* po/de.po: update German translation
|
||||
|
||||
2019-01-05 niememat <niememat@gmail.com>
|
||||
|
||||
* po/fi.po: Fix and updated translation in Finnish
|
||||
|
||||
2019-01-04 P Ekholm <par.ekholm@pekholm.se>
|
||||
|
||||
* po/sv.po: Update Swedish translation
|
||||
|
||||
2019-01-02 prculley <paulr2787@gmail.com>
|
||||
|
||||
* po/gramps.pot: Update gramps.pot
|
||||
|
||||
2019-01-01 prculley <paulr2787@gmail.com>
|
||||
|
||||
* po/gramps.pot: Revert "update gramps.pot", the update_po.py
|
||||
doesn't work with glade files on Windows This reverts commit fcfecef459b37cbba0c61ae18f19f93363124980.
|
||||
|
||||
2019-01-01 prculley <paulr2787@gmail.com>
|
||||
|
||||
* po/gramps.pot: update gramps.pot
|
||||
|
||||
2019-01-01 prculley <paulr2787@gmail.com>
|
||||
|
||||
* po/update_po.py: Fix update_po.py to run on Windows
|
||||
|
||||
2018-12-31 caigner <github@sys-admin.at>
|
||||
|
||||
* po/de.po: German translation corrections
|
||||
|
||||
2018-12-30 Leonhaeuser <mirko@leonhaeuser.de>
|
||||
|
||||
* po/de.po: update German translation
|
||||
|
||||
2018-12-29 Serge Noiraud <Serge.Noiraud@laposte.net>
|
||||
|
||||
* gramps/gui/editors/editplace.py,
|
||||
gramps/gui/editors/editplaceref.py: Avoid leading and trailing
|
||||
spaces when copy/paste (#747) coordinates from a map provider. Fixes #10937
|
||||
|
||||
2018-12-28 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* gramps/gui/widgets/fanchart.py,
|
||||
gramps/plugins/docgen/cairodoc.py,
|
||||
gramps/plugins/lib/maps/messagelayer.py,
|
||||
gramps/plugins/view/pedigreeview.py: Set correct font resolution for
|
||||
Mac when drawing text directly to cairo. (#745) Fixes #0010924
|
||||
|
||||
2018-12-28 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Add some untranslated strings in po/sv.po
|
||||
|
||||
2018-12-28 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2018-12-26 prculley <paulr2787@gmail.com>
|
||||
|
||||
* po/da.po: remove crlf line endings on da.po
|
||||
|
||||
2018-12-24 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps_launcher.py: Remove extraneous setting of
|
||||
GTK_IM_MODULE_FILE. Fixes #10929
|
||||
|
||||
2018-12-22 Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
|
||||
* po/cs.po: Update Czech translation
|
||||
|
||||
2018-12-21 RossGammon <upstream@the-gammons.net>
|
||||
|
||||
* debian/changelog, debian/copyright: Update debian files after
|
||||
5.0.1 release (#744)
|
||||
|
||||
2018-12-20 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/const.py, gramps/version.py: Bump to 5.0.2
|
||||
|
||||
2018-11-15 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po - all strings complete
|
||||
|
||||
2018-11-14 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-14 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-13 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-12 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-11 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-10 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-09 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-08 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-07 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* po/sv.po: Update po/sv.po
|
||||
|
||||
2018-11-07 P<>r Ekholm <pelle.ekh@koping.net>
|
||||
|
||||
* Update po/sv.po
|
||||
|
192
FAQ
@@ -1,4 +1,4 @@
|
||||
**** This is Gramps Frequently Asked Questions ****
|
||||
**** This is GRAMPS Frequently Asked Questions ****
|
||||
|
||||
The questions below frequently come up in mailing list discussions and forums.
|
||||
This list is by no means complete. If you would like to add questions/answers
|
||||
@@ -9,23 +9,23 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
|
||||
|
||||
==General==
|
||||
|
||||
1. What is Gramps?
|
||||
1. What is GRAMPS?
|
||||
|
||||
2. Where do I get it and how much does it cost?
|
||||
|
||||
3. Does Gramps exist in other languages?
|
||||
3. Does GRAMPS exist in other languages?
|
||||
|
||||
4. How do I keep backups?
|
||||
|
||||
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
|
||||
|
||||
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
|
||||
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
|
||||
|
||||
7. Does it work with Windows (tm)?
|
||||
|
||||
8. Does it work with the Mac?
|
||||
|
||||
9. What are the Minimum Specs to run Gramps?
|
||||
9. What are the Minimum Specs to run GRAMPS?
|
||||
|
||||
==Preferences==
|
||||
|
||||
@@ -33,43 +33,43 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
|
||||
|
||||
==Collaboration-Portability==
|
||||
|
||||
11. Is Gramps compatible with other genealogical software?
|
||||
11. Is GRAMPS compatible with other genealogical software?
|
||||
|
||||
12. Can Gramps read files created by GenApp X?
|
||||
12. Can GRAMPS read files created by GenApp X?
|
||||
|
||||
13. Can Gramps write files readable by GenApp X?
|
||||
13. Can GRAMPS write files readable by GenApp X?
|
||||
|
||||
14. What standards does Gramps support?
|
||||
14. What standards does GRAMPS support?
|
||||
|
||||
15. How do I import data from another genealogy program into Gramps?
|
||||
15. How do I import data from another genealogy program into GRAMPS?
|
||||
|
||||
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
|
||||
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
|
||||
|
||||
==Reports==
|
||||
|
||||
17. Can Gramps print a genealogical tree for my family?
|
||||
17. Can GRAMPS print a genealogical tree for my family?
|
||||
|
||||
18. In what formats can Gramps output its reports?
|
||||
18. In what formats can GRAMPS output its reports?
|
||||
|
||||
19. How can I change the default language in reports?
|
||||
|
||||
20. Is Gramps compatible with the Internet?
|
||||
20. Is GRAMPS compatible with the Internet?
|
||||
|
||||
21. Can I create custom reports/filters/whatever?
|
||||
|
||||
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
|
||||
|
||||
23. I would like to contribute to Gramps by writing my favorite report.
|
||||
23. I would like to contribute to GRAMPS by writing my favorite report.
|
||||
|
||||
==Database - Gramps file formats==
|
||||
==Database - GRAMPS file formats==
|
||||
|
||||
24. What is the maximum database size (bytes) Gramps can handle?
|
||||
24. What is the maximum database size (bytes) GRAMPS can handle?
|
||||
|
||||
25. How many people can Gramps database handle?
|
||||
25. How many people can GRAMPS database handle?
|
||||
|
||||
26. My database is really big. Is there a way around loading all the data into memory?
|
||||
|
||||
27. Can I run Gramps from a database on a NFS share?
|
||||
27. Can I run GRAMPS from a database on a NFS share?
|
||||
|
||||
28. Why is the database format not portable?
|
||||
|
||||
@@ -77,116 +77,123 @@ to this list, please email your suggestions to gramps-devel@lists.sf.net
|
||||
|
||||
29. I found a bug and I want it fixed right now! What do I do?
|
||||
|
||||
30. Gramps should be a .... type of application
|
||||
30. GRAMPS should be a .... type of application
|
||||
|
||||
==Gramps Webhosting ==
|
||||
==GRAMPS Webhosting ==
|
||||
|
||||
31. How can I publish web sites generated by GRAMPS?
|
||||
|
||||
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
|
||||
|
||||
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
|
||||
|
||||
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
|
||||
|
||||
31. How can I publish web sites generated by Gramps?
|
||||
|
||||
|
||||
**** Questions and answers ****
|
||||
|
||||
==General==
|
||||
|
||||
1. What is Gramps?
|
||||
1. What is GRAMPS?
|
||||
|
||||
Gramps is the Genealogical Research and Analysis Management Program System.
|
||||
GRAMPS is the Genealogical Research and Analysis Management Program System.
|
||||
In other words, it is a personal genealogy program letting you store, edit,
|
||||
and research genealogical data using the powers of your computer.
|
||||
|
||||
|
||||
2. Where do I get it and how much does it cost?
|
||||
|
||||
Gramps can be downloaded from http://sf.net/projects/gramps at no charge.
|
||||
Gramps is an Open Source project covered by the GNU General Public License.
|
||||
GRAMPS can be downloaded from http://sf.net/projects/gramps at no charge.
|
||||
GRAMPS is an Open Source project covered by the GNU General Public License.
|
||||
You have full access to the source code and are allowed to distribute the
|
||||
program and source code freely.
|
||||
|
||||
|
||||
3. Does Gramps exist in other languages?
|
||||
3. Does GRAMPS exist in other languages?
|
||||
|
||||
Yes, at the moment Gramps is translated in 15 languages
|
||||
Yes, at the moment GRAMPS is translated in 15 languages
|
||||
|
||||
|
||||
4. How do I keep backups?
|
||||
|
||||
Use a recent version of Gramps! From 2.2.5 onwards there is an automatic backup utility.
|
||||
It is extremely important to keep backups of your data, and keep them in a safe place. Gramps has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), Gramps will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
|
||||
Use a recent version of GRAMPS! From 2.2.5 onwards there is an automatic backup utility.
|
||||
It is extremely important to keep backups of your data, and keep them in a safe place. GRAMPS has a specific portable file format which is small, and human readable, denoted by .gramps. If you have allowed this in the preferences (In Edit menu->Preferences->General), GRAMPS will keep a backup of your database on exit. You can copy this backup file from time to time to a save location (eg a usb stick).
|
||||
|
||||
Note: The .gramps files are compressed. Clicking them will open Gramps. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
|
||||
Do not keep backups in GEDCOM. Not all information Gramps stores can be written in the GEDCOM. Hence, an export/import operation Gramps --> GEDCOM --> Gramps, will mean you lose data. Use the .gramps file format for backups!
|
||||
Note: The .gramps files are compressed. Clicking them will open GRAMPS. To see the XML select them and open them with a decompressing utility (like ark, gunzip), after which you can extract the XML file which is human readable.
|
||||
Do not keep backups in GEDCOM. Not all information GRAMPS stores can be written in the GEDCOM. Hence, an export/import operation GRAMPS --> GEDCOM --> GRAMPS, will mean you lose data. Use the .gramps file format for backups!
|
||||
Do not keep backups in GRDB format. GRDB is a database, which might be computer dependent (read, not working on a different PC). Small damage to a GRDB file can also not be repaired. Use the .gramps file format for backups!
|
||||
|
||||
|
||||
5. Does Gramps support Unicode fonts? In particular, does it support non-Roman Unicode fonts?
|
||||
|
||||
Yes. Gramps works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
|
||||
Yes. GRAMPS works internally with Unicode (UTF-8), so all alphabets can be used on all entry fields. All reports fully support this, although for PDF/PS you need to work with gnome-print or openoffice.
|
||||
|
||||
==Installation==
|
||||
|
||||
6. What is needed to install Gramps under Linux, Solaris, or FreeBSD?
|
||||
6. What is needed to install GRAMPS under Linux, Solaris, or FreeBSD?
|
||||
|
||||
Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, Gramps should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, Gramps will have additional functionality. The Gramps project recommends version 2.8 or higher of GTK.
|
||||
GRAMPS is a [http://en.wikipedia.org/wiki/Gtk GTK] application. GRAMPS needs to have the [http://en.wikipedia.org/wiki/Pygtk pygtk] libraries installed on the system. As long as these libraries are installed, GRAMPS should function. It will operate under the GNOME desktop, KDE desktop, or any other desktop. If the GNOME bindings for Python are installed on the system, GRAMPS will have additional functionality. The GRAMPS project recommends version 2.8 or higher of GTK.
|
||||
|
||||
|
||||
7. Does it work with Windows (tm)?
|
||||
|
||||
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
|
||||
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and GRAMPS off the CD, even if your computer is entirely Windows.
|
||||
|
||||
An Windows installer is available for 32 and 64 bit versions of windows from Windows versions 7 through 10. As with all other support, we do do our best to solve windows related problems.
|
||||
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
|
||||
|
||||
|
||||
8. Does it work with the Mac?
|
||||
|
||||
The Fink project has ported some older versions of Gramps to OS X (tm). The Mac OS X port is not directly supported by the Gramps project, primarily because none of the Gramps developers have access to Mac OS X and because OS X is not Free Software.
|
||||
The Fink project has ported some older versions of GRAMPS to OS X (tm). The Mac OS X port is not directly supported by the GRAMPS project, primarily because none of the GRAMPS developers have access to Mac OS X and because OS X is not Free Software.
|
||||
|
||||
This present version of Gramps (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
|
||||
This present version of GRAMPS (2.2.x) does not appear to have been ported by the Fink project. Please contact the Fink project for more information. However, some users had success in installing 2.2.x on Mac OSX either running in native mode or running on X11 using some of the fink packages.
|
||||
|
||||
|
||||
9. What are the Minimum Specs to run Gramps?
|
||||
9. What are the Minimum Specs to run GRAMPS?
|
||||
|
||||
We would recommend at least an 800x600 video display. For Gramps 5.x, Gramps can run quite efficiently on a 3GB memory system. A system with that much RAM should be able to hold more than 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
|
||||
We would recommend at least an 800x600 video display. For GRAMPS 2.0, the memory requirements have been reduced, and GRAMPS can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
|
||||
|
||||
|
||||
==Preferences==
|
||||
|
||||
10. Can I change the dates in reports to 'day month year'
|
||||
|
||||
Yes, change in the preferences ("Edit->Preferences") the date for Gramps to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
|
||||
Yes, change in the preferences ("Edit->Preferences") the date for GRAMPS to the required format (eg YYYY-MM-DD or day mont year), and make the report. Your global date preferences will be used.
|
||||
|
||||
|
||||
==Collaboration-Portability==
|
||||
|
||||
11. Is Gramps compatible with other genealogical software?
|
||||
11. Is GRAMPS compatible with other genealogical software?
|
||||
|
||||
Gramps makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable Gramps to read and write GEDCOM files.
|
||||
GRAMPS makes every effort to maintain compatibility with GEDCOM, the general standard of recording genealogical information. We have import and export filters that enable GRAMPS to read and write GEDCOM files.
|
||||
|
||||
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by Gramps, and we will do our best to support it!
|
||||
It is important to understand that the GEDCOM standard is poorly implemented -- virtually every genealogical software has its own "flavor" of GEDCOM. As we learn about new flavor, the import/export filters can be created very quickly. However, finding out about the unknown flavors requires user feedback. Please feel free to inform us about any GEDCOM flavor not supported by GRAMPS, and we will do our best to support it!
|
||||
|
||||
|
||||
12. Can Gramps read files created by GenApp X?
|
||||
12. Can GRAMPS read files created by GenApp X?
|
||||
|
||||
See above.
|
||||
|
||||
|
||||
13. Can Gramps write files readable by GenApp X?
|
||||
13. Can GRAMPS write files readable by GenApp X?
|
||||
|
||||
See above.
|
||||
|
||||
|
||||
14. What standards does Gramps support?
|
||||
14. What standards does GRAMPS support?
|
||||
|
||||
The nice thing about standards is that there never is a shortage of them. Gramps is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
|
||||
The nice thing about standards is that there never is a shortage of them. GRAMPS is tested to support the following flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
|
||||
|
||||
|
||||
15. How do I import data from another genealogy program into Gramps?
|
||||
15. How do I import data from another genealogy program into GRAMPS?
|
||||
|
||||
The best way is to create a new gramps database file, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
|
||||
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
|
||||
|
||||
|
||||
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
|
||||
16. Can I install GRAMPS on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
|
||||
|
||||
While Gramps can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
|
||||
While GRAMPS can generate web sites, it does not provide a web interface that allows for editing. If this is a requirement, then [http://geneweb.org GeneWeb] or [http://phpgedview.sourceforge.net PhpGedView] are programs more likely to meet your needs. However, you may wish to ask yourself the following questions:
|
||||
* Do I really want relatives or other people to directly edit my genealogy database?
|
||||
* Do I implicitly trust, without verification, any data that people may enter?
|
||||
* Do these people have the same understanding of good genealogy practice that I have?
|
||||
@@ -197,7 +204,7 @@ You may also want to consider the effects of possible downtime of your site if y
|
||||
|
||||
==Reports==
|
||||
|
||||
17. Can Gramps print a genealogical tree for my family?
|
||||
17. Can GRAMPS print a genealogical tree for my family?
|
||||
|
||||
Yes. Different people have different ideas of what a genealogical tree is.
|
||||
Some think of it as a chart going from the distant ancestor and listing
|
||||
@@ -205,14 +212,14 @@ all his/her descendants and their families. Others think it should be a
|
||||
chart going from the person back in time, listing the ancestors and their
|
||||
families. Yet other people think of a table, text report, etc.
|
||||
|
||||
Gramps can produce any of the above, and many more different charts and
|
||||
GRAMPS can produce any of the above, and many more different charts and
|
||||
reports. Moreover, the plugin architechture enables users (you) to create
|
||||
their own plugins which could be new reports, charts, or research tools.
|
||||
|
||||
|
||||
18. In what formats can Gramps output its reports?
|
||||
18. In what formats can GRAMPS output its reports?
|
||||
|
||||
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and Graphviz formats.
|
||||
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.
|
||||
|
||||
|
||||
19. How can I change the default language in reports?
|
||||
@@ -220,11 +227,11 @@ Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical
|
||||
The reports are in the language of your linux installation. You can change it by installing extra language packs, see [Howto: Change the language of reports] on wiki.
|
||||
|
||||
|
||||
20. Is Gramps compatible with the Internet?
|
||||
20. Is GRAMPS compatible with the Internet?
|
||||
|
||||
Gramps can store web addresses and direct your browser to them. It can import
|
||||
GRAMPS can store web addresses and direct your browser to them. It can import
|
||||
data that you download from the Internet. It can export data that you could
|
||||
send over the Internet. Gramps is familiar with the standard file formats
|
||||
send over the Internet. GRAMPS is familiar with the standard file formats
|
||||
widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and
|
||||
WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that,
|
||||
there is little that a genealogical program can do with the Internet :-)
|
||||
@@ -234,7 +241,7 @@ there is little that a genealogical program can do with the Internet :-)
|
||||
|
||||
Yes. There are many levels of customization. One is creating or modifying
|
||||
the templates used for the reports. This gives you some control over
|
||||
the fonts, colors, and some layout of the reports. You can also use Gramps
|
||||
the fonts, colors, and some layout of the reports. You can also use GRAMPS
|
||||
controls in the report dialogs to tell what contents should be used for a
|
||||
particular report. In addition to this, you have an ability to create your
|
||||
own filters -- this is useful in selecting people based on criteria set
|
||||
@@ -246,47 +253,47 @@ knowledge of programming in Python.
|
||||
|
||||
22. Why are non-latin characters displayed as garbage in PDF/PS reports?
|
||||
|
||||
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for Gramps).
|
||||
This is a limitation of the built-in fonts of PS and PDF formats. To print non-Latin text, use the Print... in the format selection menu of the report dialog. This will use the gnome-print backend, which supports PS and PDF creation, as well as direct printing. (Note: you might need to install gnome-print separately as it is not required for GRAMPS).
|
||||
|
||||
If you only have Latin text, the PDF option will produce a smaller PDF compared to that created by gnome-print, simply because no font information will be embedded.
|
||||
|
||||
|
||||
23. I would like to contribute to Gramps by writing my favorite report.
|
||||
23. I would like to contribute to GRAMPS by writing my favorite report.
|
||||
How do I do that?
|
||||
|
||||
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing Gramps report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing Gramps tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
|
||||
The easiest way to contribute to reports, filters, tools, etc. is to copy an existing GRAMPS report, filter, or tool. If you can create what you want by modifying existing code -- great! If your idea does not fit into the logic of any existing GRAMPS tool, you will need to write your own plugin from scratch. Help is available on the [Developers Portal] on wiki, or on the developers mailing list: gramps-devel@lists.sourceforge.net.
|
||||
|
||||
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with Gramps, create menu item, and so on.
|
||||
To test your work in progress, you may save your plugin under $HOME/.gramps/plugins directory and it should be found and imported on startup. The correctly written plugin will register itself with GRAMPS, create menu item, and so on.
|
||||
|
||||
If you are happy with your plugin and would like to contribute your code back to the Gramps project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
|
||||
If you are happy with your plugin and would like to contribute your code back to the GRAMPS project, you are very welcome to do so by contacting us at gramps-devel@lists.sourceforge.net
|
||||
|
||||
|
||||
==Database - Gramps file formats==
|
||||
==Database - GRAMPS file formats==
|
||||
|
||||
24. What is the maximum database size (bytes) Gramps can handle?
|
||||
24. What is the maximum database size (bytes) GRAMPS can handle?
|
||||
|
||||
Gramps has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, Gramps should have no problem using databases with tens of thousands of people.
|
||||
GRAMPS has no hard limits on the size of a database that it can handle. Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. In reality, however, there are practical limits. The main limiting factors are the available memory on the system and the cache size used for BSDDB database access. With common memory sizes these days, GRAMPS should have no problem using databases with tens of thousands of people.
|
||||
|
||||
|
||||
25. How many people can Gramps database handle?
|
||||
25. How many people can GRAMPS database handle?
|
||||
|
||||
See above. Again, this is dependent on how much memory you have, see [Gramps Performance] on wiki.
|
||||
See above. Again, this is dependent on how much memory you have, see [GRAMPS Performance] on wiki.
|
||||
|
||||
|
||||
26. My database is really big. Is there a way around loading all the data into memory?
|
||||
|
||||
Starting with 2.0.0 release, Gramps no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
|
||||
Starting with 2.0.0 release, GRAMPS no longer loads all data into memory, which allows it to work with a much larger database than before. The fileformat used is .grdb which means gramps database.
|
||||
|
||||
|
||||
27. Can I run Gramps from a database on a NFS share?
|
||||
27. Can I run GRAMPS from a database on a NFS share?
|
||||
|
||||
Yes you can.
|
||||
|
||||
|
||||
28. Why is the database format not portable?
|
||||
|
||||
The biggest issue with Gramps portability lies with 'transactions'. With
|
||||
Gramps 2.2, we added support for atomic transactions to protect data.
|
||||
The biggest issue with GRAMPS portability lies with 'transactions'. With
|
||||
GRAMPS 2.2, we added support for atomic transactions to protect data.
|
||||
With atomic transactions, multiple changes are committed as a single
|
||||
unit. Either all the changes make it, or none of the changes make it.
|
||||
You are never left in a situation with a partial set of changes. A side
|
||||
@@ -315,7 +322,7 @@ gramps-devel@lists.sf.net :-)
|
||||
The next best thing would be to submit a good bug report. This can be done in
|
||||
one of the two ways: (1) send your report to gramps-bugs@lists.sf.net
|
||||
or (2) file your report with the bug tracker system at
|
||||
https://gramps-project.org/bugs/ (this function is also
|
||||
http://bugs.gramps-project.org (this function is also
|
||||
available by selecting "Help->Report a bug" from gramps main menu).
|
||||
|
||||
A good bug report would include:
|
||||
@@ -334,24 +341,41 @@ If the above explanations seem vague, please follow this link:
|
||||
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
||||
|
||||
|
||||
30. Gramps should be a .... type of application
|
||||
30. GRAMPS should be a .... type of application
|
||||
|
||||
The surest way to see it happen is to get it done by yourself. Since Gramps is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing Gramps development. If you would like the Gramps project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
|
||||
The surest way to see it happen is to get it done by yourself. Since GRAMPS is free/open source, nobody prevents you from taking all of the code and continuing its development in whatever direction you see fit. In doing so, you may consider giving your new project another name to avoid confusion with the continuing GRAMPS development. If you would like the GRAMPS project to provide advice, expertise, filters, etc., we will gladly cooperate with your new project, to ensure compatibility or import/export options to your new format of a project.
|
||||
|
||||
If, however, you would like the Gramps project to adopt your strategy, you would need to convince Gramps developers that your strategy is good for Gramps and superior to the present development strategy.
|
||||
If, however, you would like the GRAMPS project to adopt your strategy, you would need to convince GRAMPS developers that your strategy is good for GRAMPS and superior to the present development strategy.
|
||||
|
||||
HINT: if Gramps developers are still not convinced after about three
|
||||
HINT: if GRAMPS developers are still not convinced after about three
|
||||
messages sent to gramps-devel, maybe you are better off on your own
|
||||
rather than with a company of retards who can't fully realize the
|
||||
potential of your great idea :-)
|
||||
|
||||
|
||||
==Gramps Webhosting ==
|
||||
==GRAMPS Webhosting ==
|
||||
|
||||
31. How can I publish web sites generated by Gramps?
|
||||
31. How can I publish web sites generated by GRAMPS?
|
||||
|
||||
Since Gramps generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet.
|
||||
Since GRAMPS generates HTML pages, you can upload the pages to your personal web site. If you do not have a personal web site, and still wish to have your pages available on the internet, the GRAMPS project can provide space for you at the http://library.gramps-project.org, see the [webhosting article] on wiki.
|
||||
|
||||
|
||||
**** End of Gramps Frequently Asked Questions ****
|
||||
32. How do I submit my pages to the GRAMPS library site (http://library.gramps-project.org)?
|
||||
|
||||
If you wish to submit pages to the GRAMPS library site, you will need to contact the GRAMPS project, typically by sending a message to the gramps-users mailing list. You will then be given a username and password that will allow you to upload your files to the site. After you upload the files (in a gzip'ed tar file), the GRAMPS project will install the pages for you on the site.
|
||||
|
||||
|
||||
33. After I upload my Family Web Page to library.gramps-project.org, is the password used for write privileges only or read privileges?
|
||||
|
||||
In order to prevent abuse of the library.gramsp-project.org site, the password given allows uploads only. If you wish to have a username and password combination to restrict read access to your pages, you will need to contact the GRAMPS project, and we could set this up for you. However, the read and write accounts will be separate accounts.
|
||||
|
||||
|
||||
34. Do I view the Family Web Page with a url into my browser? Or through a link on a list of Family Web Pages on the GRAMPS-Project.org site?
|
||||
|
||||
The main page on the library.gramps-project.org site will contain an index of the available family sites. However, there will be a unique URL for each site as well.
|
||||
|
||||
|
||||
|
||||
**** End of GRAMPS Frequently Asked Questions ****
|
||||
|
||||
$Id$
|
||||
|
4
Gramps.py
Executable file → Normal file
@@ -1,4 +1,4 @@
|
||||
#! /usr/bin/env python3
|
||||
#! /usr/bin/env python
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
@@ -25,5 +25,7 @@ able to run gramps from the source directory without setting PYTHONPATH
|
||||
|
||||
From this position, import gramps works great
|
||||
"""
|
||||
import os
|
||||
os.environ['GRAMPS_RESOURCES'] = os.path.dirname(os.path.abspath(__file__))
|
||||
import gramps.grampsapp as app
|
||||
app.main()
|
||||
|
80
INSTALL
@@ -1,55 +1,50 @@
|
||||
$Id$
|
||||
|
||||
This file contains some useful details on the installation from source code
|
||||
for Gramps. It does not cover installation of a pre-built binary package.
|
||||
for GRAMPS. It does not cover installation of a pre-built binary package.
|
||||
For that use your package manager, the rest is already done by the packager.
|
||||
|
||||
Uninstall old version
|
||||
---------------------
|
||||
If you do a source install in the same place as an existing install,
|
||||
If you do a source install in the same place of an existing install,
|
||||
you need to remove the old version first. You can delete the old
|
||||
version by deleting the installed directories. For example, if your installation prefix is /usr/local, remove the following:
|
||||
/usr/local/share/gramps
|
||||
version by deleting the installed directories (for example,
|
||||
/usr/share/gramps
|
||||
/usr/local/lib/pythonx.x/site-packages/gramps
|
||||
If you installed with a package manager you might instead need to remove
|
||||
/usr/local/lib/pythonx.x/dist-packages/gramps
|
||||
|
||||
replacing pythonx.x with the python version you used, e.g. python3.4.
|
||||
Also remove any gramps .egg files that are installed along with the gramps
|
||||
directory and the file /usr/local/bin/gramps.
|
||||
|
||||
/usr/lib/pythonx.x/site-packages/gramps
|
||||
/usr/lib/pythonx.x/dist-packages/gramps
|
||||
where pythonx.x is python2.7 or whatever version you installed gramps with.
|
||||
Also remove the gramps .egg files that are installed along with the gramps
|
||||
directory.
|
||||
|
||||
If you don't know the list of all files that Gramps installed, you can
|
||||
reinstall it with the --record option, and take a look at the list this
|
||||
produces (so python setup.py install --record grampsfiles.txt
|
||||
|
||||
Gramps is a python application, so loading happens on reading the
|
||||
GRAMPS is a python application, so loading happens on reading the
|
||||
files, meaning that files of a previous version that are no longer
|
||||
present in the new version can still be loaded, making the new install
|
||||
unstable!
|
||||
|
||||
distutils install
|
||||
-----------------
|
||||
We do not check all dependencies of Gramps, see README for a list of
|
||||
all required and optional dependencies. Missing dependencies will
|
||||
result in runtime errors.
|
||||
We do not check all dependencies of Gramps, see README for a
|
||||
list of all required and optional dependencies. On running Gramps, errors will
|
||||
be returned if dependencies are missing.
|
||||
|
||||
To build and install, whether from a tarball or git repo:
|
||||
python3 setup.py build
|
||||
sudo python3 setup.py install
|
||||
If you are building from released tarball, you should be able to just
|
||||
run
|
||||
|
||||
You can avoid using sudo for the install step by specifying a prefix to which you have write priviledge. The default is /usr/local, which is usually owned by root. You can learn of more options with
|
||||
python3 setup.py --help
|
||||
python setup.py build
|
||||
python setup.py install
|
||||
|
||||
One can use gramps from the command line without installing it by
|
||||
setting the following environment variables, but that won't provide
|
||||
things like MIME type and desktop entries.
|
||||
|
||||
export PYTHONPATH="/top/grampsdir/gramps:$PYTHONPATH"
|
||||
export GRAMPS_RESOURCES="/top/grampsdir"
|
||||
|
||||
See below for ways to invoke Gramps.
|
||||
where the last must be done as root. You can work with Gramps if you only build
|
||||
it by pointing the PYTHONPATH to the build directory, but things like MIME type
|
||||
and desktop entries will not be created then.
|
||||
|
||||
Typical install directories in linux (ubuntu) are:
|
||||
* /usr/local/lib/python3.4/dist-packages/gramps/ : the gramps python module
|
||||
* /usr/local/lib/python2.7/dist-packages/gramps/ : the gramps python module
|
||||
* /usr/local/share/mime-info : mime info so gramps opens files automatically
|
||||
* /usr/local/share/icons/gnome : our icons
|
||||
* /usr/local/share/doc/gramps : documentation, also example .gramps and .gedcom
|
||||
@@ -62,45 +57,46 @@ Typical install directories in linux (ubuntu) are:
|
||||
Running Gramps
|
||||
--------------
|
||||
Gramps is python only, so no compilation is needed, you can even run gramps
|
||||
from the source directory.
|
||||
from the source directory.
|
||||
|
||||
a) You installed Gramps, then you can run it with the command
|
||||
|
||||
gramps
|
||||
gramps
|
||||
|
||||
b) You installed Gramps, and want to start it from the PYTHONPATH. In this
|
||||
case use the command:
|
||||
|
||||
python3 -c 'from gramps.grampsapp import main; main()'
|
||||
python -c 'from gramps.grampsapp import main; main()'
|
||||
|
||||
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
|
||||
The executable 'gramps' in /usr/local/bin or /usr/bin from a) does
|
||||
this for you.
|
||||
|
||||
b) You downloaded the Gramps source code to a directory, and want to run it.
|
||||
You can start Gramps from the source code directory with
|
||||
|
||||
python3 Gramps.py
|
||||
python Gramps.py
|
||||
|
||||
See gramps/gen/const.py how Gramps finds its resource directories in case
|
||||
See gramps/gen/const.py how Gramps finds his resource directories in case
|
||||
you encounter problems.
|
||||
|
||||
Custom directory installation
|
||||
-------------------------------------
|
||||
If you would like to install Gramps without being root, or in an
|
||||
If you would like to install GRAMPS without being root, or in an
|
||||
alternative location on windows, supply the --root argument to setup.py
|
||||
|
||||
For example:
|
||||
python3 setup.py install --root ~/test
|
||||
python setup.py install --root ~/test
|
||||
or
|
||||
python setup.py install --root ~/test --enable-packager-mode
|
||||
|
||||
The last option, --enable-packager-mode, is needed if you want to disable
|
||||
execution of post-install mime processing. If you don't have root/admin
|
||||
access, this will be needed
|
||||
|
||||
Packager's issues
|
||||
------------------
|
||||
There is a MANIFEST.in file to indicate the work needed.
|
||||
To create a source distribution run:
|
||||
|
||||
python3 setup.py sdist
|
||||
python setup.py sdist
|
||||
|
||||
If Gramps is built outside of the source tree in a temporary location (e.g. when
|
||||
packaging for a distribution), the --resourcepath option can be used to specify
|
||||
the path to the installed location of the Gramps resources (e.g. /usr/share):
|
||||
|
||||
python3 setup.py install --resourcepath=/usr/share
|
||||
|
397
LICENSE
Normal file
@@ -0,0 +1,397 @@
|
||||
GNU Free Documentation License
|
||||
Version 1.2, November 2002
|
||||
|
||||
|
||||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document "free" in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The "Document", below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as "you". You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML, PostScript or PDF designed for human modification. Examples of
|
||||
transparent image formats include PNG, XCF and JPG. Opaque formats
|
||||
include proprietary formats that can be read and edited only by
|
||||
proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML, PostScript or PDF produced by some word
|
||||
processors for output purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section "Entitled XYZ" means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as "Acknowledgements",
|
||||
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section "Entitled XYZ" according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
|
||||
4. MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section Entitled "History", Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the "History" section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||||
Preserve the Title of the section, and preserve in the section all
|
||||
the substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section Entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section to be Entitled "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
O. Preserve any Warranty Disclaimers.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section Entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
|
||||
5. COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections Entitled "History"
|
||||
in the various original documents, forming one section Entitled
|
||||
"History"; likewise combine any sections Entitled "Acknowledgements",
|
||||
and any sections Entitled "Dedications". You must delete all sections
|
||||
Entitled "Endorsements".
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an "aggregate" if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled "Acknowledgements",
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
|
||||
ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the "with...Texts." line with this:
|
||||
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
@@ -1,20 +1,17 @@
|
||||
include ChangeLog
|
||||
include AUTHORS
|
||||
include COPYING
|
||||
include FAQ
|
||||
include Gramps.py
|
||||
include INSTALL
|
||||
include LICENSE
|
||||
include MANIFEST.in
|
||||
include NEWS
|
||||
include RELEASE_NOTES
|
||||
include TODO
|
||||
include CONTRIBUTING
|
||||
include TestPlan.txt
|
||||
recursive-include bash *
|
||||
recursive-include data *
|
||||
recursive-include debian *
|
||||
recursive-include docs *
|
||||
recursive-include example *
|
||||
recursive-include gramps *
|
||||
recursive-include help *
|
||||
recursive-include images *
|
||||
@@ -25,9 +22,11 @@ recursive-include windows *
|
||||
|
||||
# Remove files created in the build
|
||||
exclude data/tips.xml
|
||||
exclude data/holidays.xml
|
||||
exclude gramps/plugins/lib/holidays.xml
|
||||
exclude po/.intltool-merge-cache
|
||||
global-exclude *.pyc
|
||||
global-exclude *.pyo
|
||||
|
||||
# Remove directories which should not be included in the distribution
|
||||
prune gramps/guiQML
|
||||
#prune gramps/webapp
|
||||
|
111
README
Normal file
@@ -0,0 +1,111 @@
|
||||
$Id$
|
||||
|
||||
Please read the COPYING file first.
|
||||
|
||||
If building from source, also read the INSTALL file (at least through the
|
||||
"SUPER-SHORT VERSION") before going further.
|
||||
|
||||
Requirements
|
||||
--------------------------------
|
||||
The following packages *MUST* be installed in order for Gramps to work:
|
||||
Python 2.7 or greater, Python 3.2 or greater (or both python versions)
|
||||
GTK 3.0 or greater
|
||||
pygobject 3.3.2 or greater
|
||||
cairo, pango, pangocairo with introspection bindings (the gi packages)
|
||||
librsvg2 (svg icon view)
|
||||
xdg-utils
|
||||
bsddb3 is required for Python 3.2 (not python 2.7)
|
||||
|
||||
The following package is needed for full translation of the interface
|
||||
to your language:
|
||||
language-pack-gnome-xx
|
||||
Translation of GTK elements to your language, with
|
||||
xx your language code; e.g. for Dutch you need
|
||||
language-pack-gnome-nl. The translation of the
|
||||
Gramps strings is included with the gramps source.
|
||||
|
||||
|
||||
The following packages are *STRONGLY RECOMMENDED* to be installed:
|
||||
|
||||
osmgpsmap Used to show maps in the geography view.
|
||||
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
|
||||
but the Python bindings for this must also be present.
|
||||
Without this the GeoView will not be active, see
|
||||
http://gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Main_Window#Geography_Category
|
||||
!! PACKAGERS: unfortunately, at the moment (March 2013),
|
||||
the patches which gramps 4.0 needs osm-gps-map to have
|
||||
are not yet released (as a new osm-gps-map version). The
|
||||
osm-gps-map sources must be dated 6 February 2013 (or
|
||||
later) to have the necessary patches. You may obtain
|
||||
it from: http://nzjrs.github.com/osm-gps-map/ or else
|
||||
http://sourceforge.net/projects/gramps/files/Dependencies
|
||||
(The necessary version seems to be 0.8 -- or later.)
|
||||
|
||||
GraphViz Enable creation of graphs using GraphViz engine.
|
||||
Without this, three reports cannot be run.
|
||||
Obtain it from: http://www.graphviz.org
|
||||
|
||||
PyICU Improves localised sorting in Gramps. In particular, this
|
||||
applies to sorting in the various views and in the
|
||||
Narrative Web output. It is particularly helpful for
|
||||
non-Latin characters, for non-English locales and on MS
|
||||
Windows and Mac OS X platforms. If it is not available,
|
||||
sorting is done through built-in libraries. PyICU is
|
||||
fairly widely available through the package managers of
|
||||
distributions. See http://pyicu.osafoundation.org/
|
||||
(These are Python bindings for the ICU package.)
|
||||
|
||||
The following packages are optional
|
||||
|
||||
gtkspell Enable spell checking in the notes. Gtkspell depends on
|
||||
enchant. A version of gtkspell with gobject introspection
|
||||
is needed, so minimally version 3.0.0
|
||||
|
||||
rcs The GNU Revision Control System (RCS) can be used to manage
|
||||
multiple revisions of your family trees. See info at
|
||||
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
Only rcs is needed, NO python bindings are required
|
||||
|
||||
PIL Python Image Library is needed to crop
|
||||
images and also to convert non-JPG images to
|
||||
JPG so as to include them in LaTeX output.
|
||||
(For Python3 a different source may be needed.)
|
||||
|
||||
GExiv2 Enables Gramps to manage Exif metadata embedded in your
|
||||
media. Gramps needs version 0.5 or greater.
|
||||
See http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
|
||||
|
||||
ttf-freefont More font support in the reports
|
||||
|
||||
gir-webkit GObject introspection data of WebKit is required for the
|
||||
hidden view 'Htmlview', which allows websites to be
|
||||
opened in Gramps. Users can unhide the view in the
|
||||
plugin manager. A html renderer must be installed to
|
||||
use the view.
|
||||
!! PACKAGERS, Test if on your distribution
|
||||
webkit and Gramps is stable. If you obtain crashes, patch
|
||||
src/plugins/view/htmlrenderer.py and
|
||||
src/plugins/view/geoview.gpr.py, so as to remove:
|
||||
from gi.repository import WebKit as webkit
|
||||
|
||||
goocanvas2:
|
||||
Required for the (user-downloadable) Graphview plugin
|
||||
|
||||
No longer needed in 4.0:
|
||||
pygoocanvas, pygtk, pyexiv2
|
||||
No longer needed in 3.3:
|
||||
python-enchant Enchant
|
||||
No longer needed in 3.2:
|
||||
python glade bindings
|
||||
No longer needed in 3.1:
|
||||
yelp Gnome help browser. At the moment no help is shipped
|
||||
|
||||
|
||||
Documentation
|
||||
---------------------------------
|
||||
The User Manual is now maintained on the gramps website,
|
||||
http://www.gramps-project.org/wiki/index.php?title=User_manual
|
||||
|
||||
--------------------------------
|
||||
The Gramps Project
|
||||
http://gramps-project.org
|
148
README.md
@@ -1,148 +0,0 @@
|
||||
The Gramps Project ( https://gramps-project.org ) [](https://travis-ci.org/gramps-project/gramps)[](https://codecov.io/github/gramps-project/gramps?branch=master)
|
||||
===================
|
||||
We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.
|
||||
|
||||
Please read the **COPYING** file first.
|
||||
|
||||
Please read the **INSTALL** file if you intend to build from source.
|
||||
|
||||
Requirements
|
||||
============
|
||||
The following packages **MUST** be installed in order for Gramps to work:
|
||||
|
||||
* **Python** 3.2 or greater - The programming language used by Gramps. https://www.python.org/
|
||||
* **GTK** 3.10 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
|
||||
* **pygobject** 3.12 or greater - Python Bindings for GLib/GObject/GIO/GTK+ https://wiki.gnome.org/Projects/PyGObject
|
||||
|
||||
The following three packages with GObject Introspection bindings (the gi packages)
|
||||
|
||||
* **cairo** 1.13.1 or greater - a 2D graphics library with support for multiple output devices. http://cairographics.org/
|
||||
* **Pycairo** 1.13.3 or greater - GObject Introspection bindings for cairo. https://github.com/pygobject/pycairo
|
||||
* **pango** - a library for laying out and rendering of text, with an emphasis on internationalization. http://www.pango.org/
|
||||
* **pangocairo** - Allows you to use Pango with Cairo http://www.pango.org/
|
||||
|
||||
* **librsvg2** - (SVG icon view) a library to render SVG files using cairo. http://live.gnome.org/LibRsvg
|
||||
* **xdg-utils** - Desktop integration utilities from freedesktop.org
|
||||
* **bsddb3** - Python bindings for Oracle Berkeley DB https://pypi.python.org/pypi/bsddb3/
|
||||
* **sqlite3** - Python bindings for SQLite Database library
|
||||
|
||||
The following package is needed for full translation of the interface
|
||||
to your language:
|
||||
|
||||
* **language-pack-gnome-xx**
|
||||
|
||||
Translation of GTK elements to your language, with
|
||||
xx your language code; e.g. for Dutch you need
|
||||
language-pack-gnome-nl. The translation of the
|
||||
Gramps strings is included with the gramps source.
|
||||
|
||||
|
||||
The following packages are **STRONGLY RECOMMENDED** to be installed:
|
||||
--------------------------------------------------------------------
|
||||
* **osmgpsmap**
|
||||
|
||||
Used to show maps in the geography view.
|
||||
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
|
||||
but the Python bindings for this must also be present, so gir1.2-osmgpsmap-1.0.
|
||||
Without this the GeoView will not be active, see
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Categories#Geography_Category
|
||||
|
||||
* **Graphviz**
|
||||
|
||||
Enable creation of graphs using Graphviz engine.
|
||||
Without this, three reports cannot be run.
|
||||
Obtain it from: http://www.graphviz.org or try graphviz and python3-pygraphviz from your packages.
|
||||
|
||||
* **PyICU**
|
||||
|
||||
Improves localised sorting in Gramps. In particular, this
|
||||
applies to sorting in the various views and in the
|
||||
Narrative Web output. It is particularly helpful for
|
||||
non-Latin characters, for non-English locales and on MS
|
||||
Windows and Mac OS X platforms. If it is not available,
|
||||
sorting is done through built-in libraries. PyICU is
|
||||
fairly widely available through the package managers of
|
||||
distributions. See http://pyicu.osafoundation.org/
|
||||
(These are Python bindings for the ICU package.
|
||||
https://pypi.python.org/pypi/PyICU/)
|
||||
|
||||
* **Ghostscript**
|
||||
|
||||
Used by Graphviz reports to help create PDF's
|
||||
|
||||
The following packages are optional:
|
||||
------------------------------------
|
||||
* **gtkspell**
|
||||
|
||||
Enable spell checking in the notes. Gtkspell depends on
|
||||
enchant. A version of gtkspell with gobject introspection
|
||||
is needed, so minimally version 3.0.0
|
||||
|
||||
* **rcs**
|
||||
|
||||
The GNU Revision Control System (RCS) can be used to manage
|
||||
multiple revisions of your family trees. See info at
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
Only rcs is needed, NO python bindings are required
|
||||
|
||||
* **PIL**
|
||||
|
||||
Python Image Library (PILLOW) is needed to crop
|
||||
images and also to convert non-JPG images to
|
||||
JPG so as to include them in LaTeX output.
|
||||
(For Python3 a different source may be needed,
|
||||
python-imaging or python-pillow or python3-pillow)
|
||||
|
||||
* **GExiv2**
|
||||
|
||||
Enables Gramps to manage Exif metadata embedded in your
|
||||
media. Gramps needs version 0.5 or greater.
|
||||
See https://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
|
||||
|
||||
* **ttf-freefont**
|
||||
|
||||
More font support in the reports
|
||||
|
||||
Optional packages required by Third-party Addons
|
||||
------------------------------------------------
|
||||
|
||||
**Third-party Addons are written by users and developers and unless stated are not officially part of Gramps.**
|
||||
For more information about Addons see: https://gramps-project.org/wiki/index.php?title=Third-party_Plugins
|
||||
|
||||
Prerequistes required for the following Addons to work:
|
||||
|
||||
* **Family Sheet** - Requires: PIL (Python Imaging Library) or PILLOW.
|
||||
( https://gramps-project.org/wiki/index.php?title=Family_Sheet )
|
||||
|
||||
* **Graph View** - Requires: PyGoocanvas and Goocanvas (python-pygoocanvas, gir1.2-goocanvas-2.0).
|
||||
( https://gramps-project.org/wiki/index.php?title=Graph_View )
|
||||
|
||||
* **Network Chart** - Requires: networkx and pygraphviz
|
||||
( https://gramps-project.org/wiki/index.php?title=NetworkChart )
|
||||
|
||||
* **PedigreeChart** - Can optionally use - numpy if installed
|
||||
( https://gramps-project.org/wiki/index.php?title=PedigreeChart )
|
||||
|
||||
No longer needed:
|
||||
-----------------
|
||||
* Since Gramps 4.2:
|
||||
**gir-webkit**
|
||||
|
||||
* Since Gramps 4.0:
|
||||
**pygoocanvas, pygtk, pyexiv2**
|
||||
|
||||
* Since Gramps 3.3:
|
||||
**python-enchant Enchant**
|
||||
|
||||
* Since Gramps 3.2:
|
||||
**python glade bindings**
|
||||
|
||||
* Since Gramps 3.1:
|
||||
**yelp** - Gnome help browser. No offline help is shipped see Gramps website for User manual
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
The User Manual is maintained on the Gramps website:
|
||||
|
||||
* https://www.gramps-project.org/wiki/index.php?title=User_manual
|
||||
|
@@ -1,3 +1,4 @@
|
||||
$Id$
|
||||
|
||||
UNSTABLE Gramps 4.0.0 Beta2 release.
|
||||
|
||||
|
@@ -1,23 +0,0 @@
|
||||
_gramps()
|
||||
{
|
||||
local cur prev opts
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--action --config --create --databases --debug --export --format --help --import --open --options --quiet --remove --show --usage --version --yes -? -C -L -O -a -b -c -d -e -f -i -l -p -q -r -s -t -u -v -y"
|
||||
if [[ ${cur} == -* ]] ; then
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
elif [[ ${cur} == --open ]] ; then
|
||||
local IFS=$'\n'
|
||||
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
|
||||
COMPREPLY=( $(compgen --W "${names[*]}" -- ${cur}) )
|
||||
return 0
|
||||
else
|
||||
local IFS=$'\n'
|
||||
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
|
||||
COMPREPLY=( $(compgen -W "${names[*]}" -- ${cur}) )
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
complete -F _gramps gramps
|
@@ -1,144 +1,142 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Id$ -->
|
||||
<authors xmlns:html="http://www.w3.org/1999/xhtml">
|
||||
<author title="author">
|
||||
<author uid="rshura" title="author">
|
||||
Alex Roitman <<html:a href="mailto:shura@gramps-project.org">shura@gramps-project.org</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="asleinius" title="contributor">
|
||||
Arturas Sleinius <<html:a href="mailto:asleinius@users.sourceforge.net">asleinius@users.sourceforge.net</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="bmcage" title="author">
|
||||
Benny Malengier <<html:a href="mailto:benny.malengier@gramps-project.org">benny.malengier@gramps-project.org</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="borilg" title="contributor">
|
||||
Boril Gourinov <<html:a href="mailto:boril.gourinov@gmail.com">boril.gourinov@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="pez4brian" title="author">
|
||||
Brian Matherly <<html:a href="mailto:brian@gramps-project.org">brian@gramps-project.org</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="dallingham" title="author">
|
||||
Don Allingham <<html:a href="mailto:don@gramps-project.org">don@gramps-project.org</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="dpeterso" title="author">
|
||||
Donald A. Peterson <<html:a href="mailto:"></html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="dsblank" title="author">
|
||||
Doug Blank <<html:a href="mailto:doug.blank@gmail.com">doug.blank@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="eerot" title="contributor">
|
||||
Eero Tamminen <<html:a href="mailto:eerot@users.sourceforge.net">eerot@users.sourceforge.net</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="erikdrgm" title="contributor">
|
||||
Erik De Richter <<html:a href="mailto:erikdrgm@users.sourceforge.net">erikdrgm@users.sourceforge.net</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="espenbe" title="contributor">
|
||||
Espen Berg <<html:a href="mailto:espenbe@gmail.com">espenbe@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="gburto01" title="contributor">
|
||||
Gary Burton <<html:a href="mailto:gary.burton@zen.co.uk">gary.burton@zen.co.uk</html:a>>
|
||||
</author>
|
||||
<author uid="gbritton" title="contributor">
|
||||
Gerald Britton <<html:a href="mailto:gerald.britton@gmail.com">gerald.britton@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="jgsack" title="contributor">
|
||||
James G Sack <<html:a href="mailto:jgsack@san.rr.com">jgsack@san.rr.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Janne Kovesjärvi <<html:a href="mailto:janne.kovesjarvi@gmail.com">janne.kovesjarvi@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Jason Simanek <<html:a href="mailto:jsimanek@gmail.com">jsimanek@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="romjerome" title="contributor">
|
||||
Jérôme Rapinat <<html:a href="mailto:romjerome@yahoo.fr">romjerome@yahoo.fr</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="jcreus" title="contributor">
|
||||
Joan Creus <<html:a href="mailto:joan.creus@gmail.com">joan.creus@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="josip" title="contributor">
|
||||
Josip Pisoj <<html:a href="mailto:josip@pisoj.com">josip@pisoj.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="jsanchez" title="contributor">
|
||||
Julio Sánchez <<html:a href="mailto:julio.sanchez@gmail.com">julio.sanchez@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="keesb" title="contributor">
|
||||
Kees Bakker <<html:a href="mailto:kees.bakker@xs4all.nl">kees.bakker@xs4all.nl</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="kdorichev" title="contributor">
|
||||
Konstantin Dorichev <<html:a href="mailto:kdorichev@gmail.com">kdorichev@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Lubo Vasko <<html:a href="mailto:pgval@inMail.sk">pgval@inMail.sk</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="ltosky" title="contributor">
|
||||
Luigi Toscano <<html:a href="mailto:luigi.toscano@tiscali.it">luigi.toscano@tiscali.it</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Luiz Gonzaga dos Santos Filho <<html:a href="mailto:lfilho@gmail.com">lfilho@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Łukasz Rymarczyk <<html:a href="mailto:yenidai@poczta.onet.pl">yenidai@poczta.onet.pl</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="m_d_n" title="contributor">
|
||||
Michiel Nauta <<html:a href="mailto:m.d.nauta@hetnet.nl">m.d.nauta@hetnet.nl</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="leonhaeuser" title="contributor">
|
||||
Mirko Leonhäuser <<html:a href="mailto:mirko@leonhaeuser.de">mirko@leonhaeuser.de</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Morten Bo Johansen <<html:a href="mailto:mbj@spamcop.net">mbj@spamcop.net</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="loshawlos" title="author">
|
||||
Martin Hawlisch <<html:a href="mailto:martin.hawlisch@gmx.de">martin.hawlisch@gmx.de</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="nick-h" title="contributor">
|
||||
Nick Hall <<html:a href="mailto:nick__hall@hotmail.com">nick__hall@hotmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
Paul Culley <<html:a href="mailto:paulr2787@gmail.com">paulr2787@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="ldnp" title="contributor">
|
||||
Peter Landgren <<html:a href="mailto:peter.talken@telia.com">peter.talken@telia.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="acraphae" title="contributor">
|
||||
Raphael Ackermann <<html:a href="mailto:raphael.ackermann@gmail.com">raphael.ackermann@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="hippy" title="author">
|
||||
Richard Taylor <<html:a href="mailto:rjt-gramps@thegrindstone.me.uk">rjt-gramps@thegrindstone.me.uk</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="noirauds" title="contributor">
|
||||
Serge Noiraud <<html:a href="mailto:Serge.Noiraud@free.fr">Serge.Noiraud@free.fr</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="has_no_svn_access" title="contributor">
|
||||
Sigmund Lorentsen <<html:a href="mailto:sigmund.lorentsen@tele2.no">sigmund.lorentsen@tele2.no</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="betula" title="contributor">
|
||||
Stefan Bjork <<html:a href="mailto:betula@users.sourceforge.net">betula@users.sourceforge.net</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="s_charette" title="contributor">
|
||||
Stéphane Charette <<html:a href="mailto:stephanecharette@gmail.com">stephanecharette@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="twaugh" title="author">
|
||||
Tim Waugh <<html:a href="mailto:twaugh@redhat.com">twaugh@redhat.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="vassilii" title="contributor">
|
||||
Vassilii Khachaturov <<html:a href="mailto:vassilii@tarunz.org">vassilii@tarunz.org</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="matlas" title="contributor">
|
||||
Zdeněk Hataš <<html:a href="mailto:zdenek.hatas@gmail.com">zdenek.hatas@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="robhealey1" title="author">
|
||||
Rob G. Healey <<html:a href="mailto:robhealey1@gmail.com">robhealey1@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="zfoldvar" title="contributor">
|
||||
Zsolt Foldvari <<html:a href="mailto:zfoldvar@users.sourceforge.net">zfoldvar@users.sourceforge.net</html:a>>
|
||||
</author>
|
||||
<author title="contributor">
|
||||
<author uid="ander882" title="contributor">
|
||||
Craig J. Anderson <<html:a href="mailto:ander882@hotmail.com">ander882@hotmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="kulath" title="author">
|
||||
Tim G L Lyons <<html:a href="mailto:tim.g.lyons@gmail.com">tim.g.lyons@gmail.com</html:a>>
|
||||
</author>
|
||||
<author title="author">
|
||||
<author uid="jralls" title="author">
|
||||
John Ralls <<html:a href="mailto:jralls@ceridwen.us">jralls@ceridwen.us</html:a>>
|
||||
</author>
|
||||
</authors>
|
||||
|
55
data/css/GeoView.css
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2009 Serge Noiraud
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
GeoView Style Sheet
|
||||
Style Name: GeoView
|
||||
Style Author: Serge Noiraud (2009)
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
This file was created for GeoView usage.
|
||||
|
||||
# $Id$
|
||||
|
||||
GeoView Styles
|
||||
|
||||
----------------------------------------------------- */
|
||||
|
||||
#geo-map
|
||||
{
|
||||
margin-left:0px;
|
||||
margin-top:0px;
|
||||
margin-right:auto;
|
||||
margin-bottom:auto;
|
||||
}
|
||||
|
||||
/* InfoWindow */
|
||||
#geo-info {
|
||||
font-size:10pt;
|
||||
max-height:200px;
|
||||
max-width: 600px;
|
||||
min-width: 300px;
|
||||
text-align: left;
|
||||
padding-right: 6px;
|
||||
overflow-x: auto;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
@@ -50,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -86,12 +87,6 @@ h1 {
|
||||
font-weight: bold;
|
||||
padding-left: 15px;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: large;
|
||||
padding-left: 15px;
|
||||
@@ -109,7 +104,6 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
text-decoration: underline;
|
||||
@@ -331,10 +325,6 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -426,7 +416,7 @@ div#SourceDetail {
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -451,7 +441,8 @@ div#families table.attrlist td.ColumnType {
|
||||
----------------------------------------------------- */
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
|
@@ -134,6 +134,7 @@ h5, h6 {
|
||||
margin:1.3em 0 .5em 1em;
|
||||
}
|
||||
p#description {
|
||||
max-width: 800px;
|
||||
margin: 0;
|
||||
padding: 1em 20px;
|
||||
text-indent: 30px;
|
||||
@@ -288,6 +289,10 @@ table.infolist thead tr th {
|
||||
table.infolist tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
vertical-align: middle;
|
||||
padding: 6px 0 6px 10px;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
display: block;
|
||||
}
|
||||
table.infolist tr.BeginLetter td, table.infolist tr.BeginSurname td {
|
||||
border-top: solid 1px #000;
|
||||
@@ -347,15 +352,15 @@ div#Individuals {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#Individuals table.IndividualList {
|
||||
div#Individuals table.individuallist {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
cursor: default;
|
||||
background: none;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName a {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName a {
|
||||
vertical-align: middle;
|
||||
}
|
||||
div#Individuals div table.infolist tr td p {
|
||||
@@ -489,7 +494,7 @@ table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
width: 17%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
@@ -1093,6 +1098,7 @@ div.Residence table.infolist tr td {
|
||||
margin: 0;
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
}
|
||||
#indivgallery div.thumbnail a {
|
||||
@@ -1101,7 +1107,6 @@ div.Residence table.infolist tr td {
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
#indivgallery div.thumbnail a img {
|
||||
padding: 0;
|
||||
@@ -1125,10 +1130,9 @@ div.narrative {
|
||||
}
|
||||
.narrative p {
|
||||
font: normal .9em/1.4em sans-serif;
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
margin-top: .5em;
|
||||
margin-bottom: 0;
|
||||
padding: 0 20px 1em 20px;
|
||||
}
|
||||
|
||||
/* Subsections : References
|
||||
|
@@ -50,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -86,12 +87,6 @@ h1 {
|
||||
font-weight: bold;
|
||||
padding-left: 15px;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: large;
|
||||
padding-left: 15px;
|
||||
@@ -109,7 +104,6 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #9DBF9D;
|
||||
@@ -254,14 +248,6 @@ table.primobjlist tr.BeginLetter td, table.primobjlist tr.BeginSurname td {
|
||||
td.ColumnLetter, td.ColumnRowLabel {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* bug #8213 testing by Stephane, 2014-12-6 */
|
||||
td.ColumnEvent, td.ColumnDate {
|
||||
white-space: nowrap;
|
||||
}
|
||||
td.ColumnPlace, td.ColumnDescription {
|
||||
width: 20%
|
||||
}
|
||||
/* end of customizations by Stephane */
|
||||
td.ColumnBirth, td.ColumnDeath, td.ColumnPartner, td.ColumnParents {
|
||||
font-size: 90%;
|
||||
}
|
||||
@@ -374,10 +360,6 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -476,7 +458,7 @@ div#SourceDetail {
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -501,7 +483,8 @@ div#families table.attrlist td.ColumnType {
|
||||
----------------------------------------------------- */
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
|
@@ -50,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -86,12 +87,6 @@ h1 {
|
||||
font-weight: bold;
|
||||
padding-left: 15px;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: large;
|
||||
padding-left: 15px;
|
||||
@@ -110,7 +105,6 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #E0E0E9
|
||||
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -469,7 +459,7 @@ div#SourceDetail {
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
|
||||
----------------------------------------------------- */
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
|
@@ -50,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -86,12 +87,6 @@ h1 {
|
||||
font-weight: bold;
|
||||
padding-left: 15px;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: large;
|
||||
padding-left: 15px;
|
||||
@@ -110,7 +105,6 @@ p#description {
|
||||
a {
|
||||
color: #36220B;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #FFE09F
|
||||
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -469,7 +459,7 @@ div#SourceDetail {
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
|
||||
----------------------------------------------------- */
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
|
@@ -50,6 +50,7 @@ Characteristic of this style is that it uses the full width of the browser
|
||||
window and that horizontal highlighting bars extend over the full width of
|
||||
the page.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
------------------------------------------------------------------------------------------------
|
||||
@@ -86,12 +87,6 @@ h1 {
|
||||
font-weight: bold;
|
||||
padding-left: 15px;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: large;
|
||||
padding-left: 15px;
|
||||
@@ -110,7 +105,6 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #EAEEF4
|
||||
@@ -367,10 +361,6 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -469,7 +459,7 @@ div#SourceDetail {
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -494,7 +484,8 @@ div#families table.attrlist td.ColumnType {
|
||||
----------------------------------------------------- */
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
|
@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
|
||||
Style Name: Web_Citations-Outline.css
|
||||
******************************************************
|
||||
|
||||
# $Id$
|
||||
|
||||
Source Citations Outline styles
|
||||
------------------------------------------------------ */
|
||||
|
@@ -18,6 +18,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
*************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
|
@@ -18,6 +18,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
*************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
|
2
data/css/Web_Horizontal-Menus.css
Normal file → Executable file
@@ -25,6 +25,7 @@ GRAMPS Cascading Style Sheet
|
||||
Style Name: Web_Navigation-Horizontal.css
|
||||
******************************************************
|
||||
|
||||
# $Id$
|
||||
|
||||
Body Element
|
||||
------------------------------------------------------ */
|
||||
@@ -32,6 +33,7 @@ body {
|
||||
background-color: #00029D;
|
||||
color: #00029D;
|
||||
width: 100%;
|
||||
padding: 0px 14px;
|
||||
}
|
||||
|
||||
/* Navigation Menus
|
||||
|
@@ -54,6 +54,7 @@ Middle images/Web_Mainz_Mid.png
|
||||
Middle Light images/Web_Mainz_MidLight.png
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
--------------------------------------------------------------------------------------------
|
||||
@@ -67,7 +68,7 @@ body {
|
||||
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
|
||||
}
|
||||
body > div {
|
||||
width: 85%;
|
||||
width: 950px;
|
||||
margin: 0px auto;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
overflow: hidden;
|
||||
@@ -90,12 +91,6 @@ h1 {
|
||||
font-style: italic;
|
||||
margin-left: 2em;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align: center;
|
||||
}
|
||||
h3 {
|
||||
font-size: xx-large;
|
||||
font-weight: normal;
|
||||
@@ -119,7 +114,6 @@ h4 {
|
||||
a {
|
||||
color: #7D5925;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #FFFFE7;
|
||||
@@ -150,7 +144,7 @@ div#nav ul li, #subnavigation ul li {
|
||||
float: left;
|
||||
}
|
||||
div#nav ul li a, #subnavigation ul li a {
|
||||
display: run-in;
|
||||
display: block;
|
||||
padding: 0.4em 0.8em 0.3em 0.8em;
|
||||
font-size: smaller;
|
||||
font-family: sans-serif;
|
||||
@@ -313,10 +307,6 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
-----------------------------------------------------------------*/
|
||||
#GalleryNav {
|
||||
@@ -437,7 +427,8 @@ div#families table.fixed_subtables table.eventlist th:last-child {
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
width: 130px;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.5em;
|
||||
@@ -533,6 +524,7 @@ div#map_canvas {
|
||||
table.calendar {
|
||||
table-layout: fixed;
|
||||
empty-cells: show;
|
||||
width: 950px;
|
||||
margin: 0px auto;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
|
@@ -45,6 +45,7 @@ gray #696969
|
||||
green #5D835F
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
--------------------------------------------------------------------------------------------
|
||||
@@ -114,7 +115,7 @@ h1 {
|
||||
font:normal 2em/1.2em serif;
|
||||
}
|
||||
h2 {
|
||||
display:block;
|
||||
display:none;
|
||||
}
|
||||
h3 {
|
||||
font:normal 2em/1.2em serif;
|
||||
@@ -138,6 +139,7 @@ h5, h6 {
|
||||
|
||||
p#description {
|
||||
color:#542;
|
||||
max-width:800px;
|
||||
margin:0;
|
||||
padding:1em 20px;
|
||||
background-color:#FFF;
|
||||
@@ -276,6 +278,7 @@ table.infolist tr th a:hover {
|
||||
table.infolist tr td {
|
||||
font:normal 1.1em/1.4em serif;
|
||||
vertical-align:middle;
|
||||
padding:.1em 10px;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
display:block;
|
||||
@@ -395,30 +398,30 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
#Individuals { }
|
||||
#Individuals table.IndividualList {
|
||||
#Individuals table.individuallist {
|
||||
border-bottom:solid 1px #A97;
|
||||
}
|
||||
#Individuals table.IndividualList tbody tr td {
|
||||
#Individuals table.individuallist tbody tr td {
|
||||
border-bottom:dashed 1px #C1B398;
|
||||
}
|
||||
#Individuals table.IndividualList tbody tr td a:hover {
|
||||
#Individuals table.individuallist tbody tr td a:hover {
|
||||
text-decoration:none;
|
||||
}
|
||||
table.IndividualList tbody tr td.ColumnSurname a:hover, table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
table.individuallist tbody tr td.ColumnSurname a:hover, table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
cursor:default;
|
||||
color:black;
|
||||
background:none;
|
||||
}
|
||||
table.IndividualList tbody tr td.ColumnName {
|
||||
table.individuallist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
table.IndividualList tbody tr td.ColumnName a {
|
||||
table.individuallist tbody tr td.ColumnName a {
|
||||
display:block;
|
||||
padding:.1em .1em;
|
||||
padding:.6em 10px;
|
||||
vertical-align:middle;
|
||||
}
|
||||
table.IndividualList tbody tr td.ColumnName a:hover {
|
||||
table.individuallist tbody tr td.ColumnName a:hover {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#Individuals div table.infolist tr td p {
|
||||
@@ -576,10 +579,6 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery { }
|
||||
@@ -736,7 +735,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
float:none;
|
||||
float:center;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -933,6 +932,7 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
margin:0;
|
||||
float:left;
|
||||
width:130px;
|
||||
height:150px;
|
||||
text-align:center;
|
||||
}
|
||||
#indivgallery .thumbnail a {
|
||||
@@ -940,7 +940,6 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
#indivgallery .thumbnail a img {
|
||||
margin:0;
|
||||
@@ -963,12 +962,11 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
div.narrative {
|
||||
padding-bottom:0;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
.narrative p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
font:normal .9em/1.4em sans-serif;
|
||||
margin-top:.5em;
|
||||
margin-bottom:0;
|
||||
padding:0 20px 1em 20px;
|
||||
}
|
||||
|
||||
/* Subsections : References
|
||||
@@ -1097,7 +1095,7 @@ div#pedigree {
|
||||
margin-right: 10px;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
margin-right: 10px;
|
||||
margin-right: 10px[
|
||||
}
|
||||
#user_footer {
|
||||
width: 70%;
|
||||
|
@@ -41,6 +41,7 @@ black #000
|
||||
white #FFF
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
0
data/css/Web_Vertical-Menus.css
Normal file → Executable file
@@ -45,6 +45,7 @@ Unknown #000
|
||||
Males Web_Gender_Male.png
|
||||
Females Web_Gender_Female.png
|
||||
|
||||
# $Id$
|
||||
|
||||
NarrativeWeb Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
@@ -155,6 +156,7 @@ h5, h6 {
|
||||
margin:1.3em 0 .5em 1em;
|
||||
}
|
||||
p#description {
|
||||
max-width:800px;
|
||||
margin:0;
|
||||
padding:1em 20px;
|
||||
}
|
||||
@@ -454,30 +456,30 @@ div#Individuals {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#Individuals table.IndividualList {
|
||||
div#Individuals table.individuallist {
|
||||
border-bottom: solid 1px #5D835F;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td {
|
||||
div#Individuals table.individuallist tbody tr td {
|
||||
border-bottom: dashed 1px #5D835F;
|
||||
background-color: #D8F3D6;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td a {
|
||||
div#Individuals table.individuallist tbody tr td a {
|
||||
display: block;
|
||||
padding: .6em 10px;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
cursor:default;
|
||||
color: #000;
|
||||
background:none;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName a {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName a {
|
||||
vertical-align:middle;
|
||||
}
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnPartner {
|
||||
div#Individuals table.individuallist tbody tr td.ColumnPartner {
|
||||
background-color: #FFF;
|
||||
}
|
||||
div#Individuals div table.infolist tr td p {
|
||||
|
@@ -45,9 +45,6 @@ Females Web_Gender_Female.png
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
overflow: visible;
|
||||
z-index:1;
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
|
@@ -29,6 +29,7 @@ Style Author: Stephane Charette and Jason Simanek
|
||||
Image Gallery
|
||||
-------------
|
||||
|
||||
# $Id$
|
||||
|
||||
ensure RegionBox <ol> is hidden and has no margins/padding that would shift the image */
|
||||
ol.RegionBox {
|
||||
|
@@ -18,11 +18,13 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
###################################################### */
|
||||
body#FamilyMap {
|
||||
background-color: #000;
|
||||
padding: 0 14px;
|
||||
width: 965px;
|
||||
}
|
||||
|
||||
/* Family Maps
|
||||
@@ -31,11 +33,8 @@ body#FamilyMap {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
border: solid 4px #000;
|
||||
margin: 0px auto;
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
max-width: 90%;
|
||||
max-height: 90%;
|
||||
width: 931px;
|
||||
height: 1000px;
|
||||
}
|
||||
|
||||
/* Place Maps
|
||||
@@ -45,8 +44,6 @@ div#place_canvas {
|
||||
border: solid 4px #000;
|
||||
width: 500px;
|
||||
height: 400px;
|
||||
max-width: 90%;
|
||||
max-height: 90%;
|
||||
}
|
||||
button#drop {
|
||||
background-color: purple;
|
||||
|
@@ -1,32 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>gramps.desktop</id>
|
||||
<metadata_license>CC0</metadata_license>
|
||||
<name>Gramps</name>
|
||||
<summary>Genealogical research program</summary>
|
||||
|
||||
<description>
|
||||
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
|
||||
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
|
||||
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
|
||||
</description>
|
||||
|
||||
<url type="homepage">https://gramps-project.org/</url>
|
||||
<url type="bugtracker">https://gramps-project.org/bugs/</url>
|
||||
<url type="help">https://gramps-project.org/wiki/index.php?title=Main_page</url>
|
||||
<project_license>GPL-2.0+</project_license>
|
||||
<developer_name>Gramps Development Team</developer_name>
|
||||
|
||||
<screenshots>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
|
||||
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<provides>
|
||||
<binary>gramps</binary>
|
||||
</provides>
|
||||
|
||||
</component>
|
||||
<application>
|
||||
<id type="desktop">gramps.desktop</id>
|
||||
<licence>CC0</licence>
|
||||
<description>
|
||||
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
|
||||
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
|
||||
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
|
||||
</description>
|
||||
<url type="homepage">http://gramps-project.org/</url>
|
||||
<screenshots>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
|
||||
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
|
||||
</screenshots>
|
||||
</application>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- $Id$ -->
|
||||
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-gramps">
|
||||
|
@@ -19,6 +19,7 @@
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
|
||||
$Id$
|
||||
-->
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
|
@@ -21,18 +21,19 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
# $Id$
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the Document Type Definition file for v1.7.1
|
||||
This is the Document Type Definition file for v1.6.0
|
||||
of the GRAMPS XML genealogy data format.
|
||||
Please use the following formal public identifier to identify it:
|
||||
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
|
||||
For example:
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
|
||||
[...]>
|
||||
-->
|
||||
|
||||
@@ -61,7 +62,7 @@ DATABASE
|
||||
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
|
||||
citations?, sources?, places?, objects?, repositories?,
|
||||
notes?, bookmarks?, namemaps?)>
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
@@ -121,7 +122,6 @@ GENDER has values of M, F, or U.
|
||||
|
||||
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
|
||||
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
|
||||
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
|
||||
<!ATTLIST name
|
||||
alt (0|1) #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
@@ -138,8 +138,6 @@ GENDER has values of M, F, or U.
|
||||
<!ELEMENT familynick (#PCDATA)>
|
||||
<!ELEMENT group (#PCDATA)>
|
||||
<!ELEMENT surname (#PCDATA)>
|
||||
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
|
||||
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
|
||||
<!ATTLIST surname
|
||||
prefix CDATA #IMPLIED
|
||||
prim (1|0) #IMPLIED
|
||||
@@ -198,13 +196,12 @@ FAMILY
|
||||
<!ELEMENT mother EMPTY>
|
||||
<!ATTLIST mother hlink IDREF #REQUIRED>
|
||||
|
||||
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
|
||||
<!ELEMENT childref (citationref*,noteref*)>
|
||||
<!ATTLIST childref
|
||||
hlink IDREF #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
mrel CDATA #IMPLIED
|
||||
frel CDATA #IMPLIED
|
||||
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT type (#PCDATA)>
|
||||
@@ -251,25 +248,20 @@ PLACES
|
||||
|
||||
<!ELEMENT places (placeobj)*>
|
||||
|
||||
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
|
||||
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
|
||||
objref*, url*, noteref*, citationref*, tagref*)>
|
||||
<!ATTLIST placeobj
|
||||
id CDATA #IMPLIED
|
||||
handle ID #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
change CDATA #REQUIRED
|
||||
name CDATA #REQUIRED
|
||||
type CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
|
||||
|
||||
<!ATTLIST pname
|
||||
lang CDATA #IMPLIED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT ptitle (#PCDATA)>
|
||||
<!ELEMENT code (#PCDATA)>
|
||||
<!ELEMENT alt_name (#PCDATA)>
|
||||
|
||||
<!ELEMENT coord EMPTY>
|
||||
<!ATTLIST coord
|
||||
|
@@ -25,13 +25,13 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
|
||||
This is the RELAX NG schema for the Gramps XML genealogy data format.
|
||||
-->
|
||||
|
||||
|
||||
<grammar
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
ns="http://gramps-project.org/xml/1.7.1/"
|
||||
ns="http://gramps-project.org/xml/1.6.0/"
|
||||
xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
|
||||
<start><element name="database">
|
||||
@@ -210,7 +210,16 @@
|
||||
</define>
|
||||
|
||||
<define name="child-rel">
|
||||
<text/>
|
||||
<choice>
|
||||
<value>Birth</value>
|
||||
<value>Adopted</value>
|
||||
<value>Stepchild</value>
|
||||
<value>Sponsored</value>
|
||||
<value>Foster</value>
|
||||
<value>None</value>
|
||||
<value>Other</value>
|
||||
<value>Unknown</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="name-content">
|
||||
@@ -221,7 +230,13 @@
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="type"><text/></attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Also Known As</value>
|
||||
<value>Birth Name</value>
|
||||
<value>Married Name</value>
|
||||
<value>Other Name</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="sort"><text/></attribute></optional>
|
||||
<optional><attribute name="display"><text/></attribute></optional>
|
||||
<optional><element name="first"><text/></element></optional>
|
||||
@@ -250,7 +265,20 @@
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="derivation"><text/></attribute></optional>
|
||||
<optional><attribute name="derivation"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Inherited</value>
|
||||
<value>Given</value>
|
||||
<value>Taken</value>
|
||||
<value>Patronymic</value>
|
||||
<value>Matronymic</value>
|
||||
<value>Feudal</value>
|
||||
<value>Pseudonym</value>
|
||||
<value>Patrilineal</value>
|
||||
<value>Matrilineal</value>
|
||||
<value>Occupation</value>
|
||||
<value>Location</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="connector"><text/></attribute></optional>
|
||||
</define>
|
||||
|
||||
@@ -451,12 +479,11 @@
|
||||
|
||||
<define name="place-content">
|
||||
<ref name="primary-object"/>
|
||||
<attribute name="name"><text/></attribute>
|
||||
<attribute name="type"><text/></attribute>
|
||||
<optional><element name="ptitle"><text/></element></optional>
|
||||
<oneOrMore><element name="pname">
|
||||
<ref name="placename-content"/>
|
||||
</element></oneOrMore>
|
||||
<optional><element name="code"><text/></element></optional>
|
||||
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
|
||||
<optional><element name="coord">
|
||||
<attribute name="long"><text/></attribute>
|
||||
<attribute name="lat"><text/></attribute>
|
||||
@@ -745,12 +772,6 @@
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="placename-content">
|
||||
<attribute name="value"><text/></attribute>
|
||||
<optional><attribute name="lang"><text/></attribute></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
</define>
|
||||
|
||||
<define name="placeref-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
|
19
data/javascript/jquery-1.3.2.min.js
vendored
Normal file
9266
data/javascript/jquery-1.7.1.js
vendored
Normal file
4
data/javascript/jquery-1.7.1.min.js
vendored
Normal file
298
data/javascript/jquery-ui-1.7.2.custom.min.js
vendored
Normal file
859
data/javascript/jquery.flexbox.js
Normal 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 = '<<',
|
||||
prev = '<',
|
||||
next = '>',
|
||||
last = '>>',
|
||||
more = '...';
|
||||
|
||||
$paging.addClass(o.paging.cssClass);
|
||||
|
||||
// set up our base page link element
|
||||
var $link = $('<a/>')
|
||||
.attr('href', '#')
|
||||
.addClass('page')
|
||||
.click(handlePagingClick),
|
||||
$span = $('<span></span>').addClass('page'),
|
||||
divId = $div.attr('id');
|
||||
|
||||
// show first page
|
||||
if (currentPage > 1) {
|
||||
$link.clone(true).attr('id', divId + 'f').attr('page', 1).html(first).appendTo($paging);
|
||||
$link.clone(true).attr('id', divId + 'p').attr('page', currentPage - 1).html(prev).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$span.clone(true).html(first).appendTo($paging);
|
||||
$span.clone(true).html(prev).appendTo($paging);
|
||||
}
|
||||
|
||||
if (o.paging.style === 'links') {
|
||||
var maxPageLinks = o.paging.maxPageLinks;
|
||||
// show page numbers
|
||||
if (totalPages <= maxPageLinks) {
|
||||
for (var i = 1; i <= totalPages; i++) {
|
||||
if (i === currentPage) {
|
||||
$span.clone(true).html(currentPage).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$link.clone(true).attr('page', i).html(i).appendTo($paging);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((currentPage + parseInt(maxPageLinks / 2)) > totalPages) {
|
||||
startPage = totalPages - maxPageLinks + 1;
|
||||
}
|
||||
else {
|
||||
startPage = currentPage - parseInt(maxPageLinks / 2);
|
||||
}
|
||||
|
||||
if (startPage > 1) {
|
||||
$link.clone(true).attr('page', startPage - 1).html(more).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
startPage = 1;
|
||||
}
|
||||
|
||||
for (var i = startPage; i < startPage + maxPageLinks; i++) {
|
||||
if (i === currentPage) {
|
||||
$span.clone(true).html(i).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$link.clone(true).attr('page', i).html(i).appendTo($paging);
|
||||
}
|
||||
}
|
||||
|
||||
if (totalPages > (startPage + maxPageLinks)) {
|
||||
$link.clone(true).attr('page', i).html(more).appendTo($paging);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (o.paging.style === 'input') {
|
||||
var $pagingBox = $('<input/>')
|
||||
.addClass('box')
|
||||
.click(function(e) {
|
||||
this.select();
|
||||
})
|
||||
.keypress(function(e) {
|
||||
return handleKeyPress(e, this.value, totalPages);
|
||||
})
|
||||
.val(currentPage)
|
||||
.appendTo($paging);
|
||||
}
|
||||
|
||||
if (currentPage < totalPages) {
|
||||
$link.clone(true).attr('id', divId + 'n').attr('page', +currentPage + 1).html(next).appendTo($paging);
|
||||
$link.clone(true).attr('id', divId + 'l').attr('page', totalPages).html(last).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$span.clone(true).html(next).appendTo($paging);
|
||||
$span.clone(true).html(last).appendTo($paging);
|
||||
}
|
||||
var startingResult = (currentPage - 1) * pageSize + 1;
|
||||
var endingResult = (startingResult > (totalResults - pageSize)) ? totalResults : startingResult + pageSize - 1;
|
||||
|
||||
if (o.paging.showSummary) {
|
||||
var summaryData = {
|
||||
"start": startingResult,
|
||||
"end": endingResult,
|
||||
"total": totalResults,
|
||||
"page": currentPage,
|
||||
"pages": totalPages
|
||||
};
|
||||
var html = o.paging.summaryTemplate.applyTemplate(summaryData);
|
||||
$('<br/>').appendTo($paging);
|
||||
$('<span></span>')
|
||||
.addClass(o.paging.summaryClass)
|
||||
.html(html)
|
||||
.appendTo($paging);
|
||||
}
|
||||
}
|
||||
|
||||
function checkCache(q, p) {
|
||||
var key = q + delim + p; // use null character as delimiter
|
||||
if (cacheData[key]) {
|
||||
for (var i = 0; i < cache.length; i++) { // TODO: is it possible to not loop here?
|
||||
if (cache[i] === key) {
|
||||
// pull out the matching element (splice), and add it to the beginning of the array (unshift)
|
||||
cache.unshift(cache.splice(i, 1)[0]);
|
||||
return cacheData[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function updateCache(q, p, s, t, data, size) {
|
||||
if (o.maxCacheBytes > 0) {
|
||||
while (cache.length && (cacheSize + size > o.maxCacheBytes)) {
|
||||
var cached = cache.pop();
|
||||
cacheSize -= cached.size;
|
||||
}
|
||||
var key = q + delim + p; // use null character as delimiter
|
||||
cacheData[key] = {
|
||||
q: q,
|
||||
p: p,
|
||||
s: s,
|
||||
t: t,
|
||||
size: size,
|
||||
data: data
|
||||
}; // add the data to the cache at the hash key location
|
||||
cache.push(key); // add the key to the MRU list
|
||||
cacheSize += size;
|
||||
}
|
||||
}
|
||||
|
||||
function displayItems(d, q) {
|
||||
var totalSize = 0, itemCount = 0;
|
||||
|
||||
if (!d)
|
||||
return;
|
||||
|
||||
$hdn.val($input.val());
|
||||
if (parseInt(d[o.totalProperty]) === 0 && o.noResultsText && o.noResultsText.length > 0) {
|
||||
$content.addClass(o.noResultsClass).html(o.noResultsText);
|
||||
$ctr.show();
|
||||
return;
|
||||
} else $content.removeClass(o.noResultsClass);
|
||||
|
||||
for (var i = 0; i < d[o.resultsProperty].length; i++) {
|
||||
var data = d[o.resultsProperty][i],
|
||||
result = o.resultTemplate.applyTemplate(data),
|
||||
exactMatch = q === result,
|
||||
selectedMatch = false,
|
||||
hasHtmlTags = false,
|
||||
match = data[o.displayValue];
|
||||
|
||||
if (!exactMatch && o.highlightMatches && q !== '') {
|
||||
var pattern = q,
|
||||
highlightStart = match.toLowerCase().indexOf(q.toLowerCase()),
|
||||
replaceString = '<span class="' + o.matchClass + '">' + match.substr(highlightStart,q.length) + '</span>';
|
||||
if (result.match('<(.|\n)*?>')) { // see if the content contains html tags
|
||||
hasHtmlTags = true;
|
||||
pattern = '(>)([^<]*?)(' + q + ')((.|\n)*?)(<)'; // TODO: look for a better way
|
||||
replaceString = '$1$2<span class="' + o.matchClass + '">$3</span>$4$6';
|
||||
}
|
||||
result = result.replace(new RegExp(pattern.replace("[", "\\["), o.highlightMatchesRegExModifier), replaceString);
|
||||
}
|
||||
|
||||
// write the value of the first match to the input box, and select the remainder,
|
||||
// but only if autoCompleteFirstMatch is set, and there are no html tags in the response
|
||||
if (o.autoCompleteFirstMatch && !hasHtmlTags && i === 0) {
|
||||
if (q.length > 0 && match.toLowerCase().indexOf(q.toLowerCase()) === 0) {
|
||||
$input.attr('pq', q); // pq == previous query
|
||||
$hdn.val(data[o.hiddenValue]);
|
||||
$input.val(data[o.displayValue]);
|
||||
selectedMatch = selectRange(q.length, $input.val().length);
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.showResults) return;
|
||||
|
||||
$row = $('<div></div>')
|
||||
.attr('id', data[o.hiddenValue])
|
||||
.attr('val', data[o.displayValue])
|
||||
.addClass('row')
|
||||
.html(result)
|
||||
.appendTo($content);
|
||||
|
||||
if (exactMatch || (++itemCount == 1 && o.selectFirstMatch) || selectedMatch) {
|
||||
$row.addClass(o.selectClass);
|
||||
}
|
||||
totalSize += result.length;
|
||||
}
|
||||
|
||||
if (totalSize === 0) {
|
||||
hideResults();
|
||||
return;
|
||||
}
|
||||
|
||||
$ctr.parent().css('z-index', 11000);
|
||||
$ctr.show();
|
||||
|
||||
$content
|
||||
.children('div')
|
||||
.mouseover(function() {
|
||||
$content.children('div').removeClass(o.selectClass);
|
||||
$(this).addClass(o.selectClass);
|
||||
})
|
||||
.mouseup(function(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
selectCurr();
|
||||
});
|
||||
|
||||
if (o.maxVisibleRows > 0) {
|
||||
var maxHeight = $row.outerHeight() * o.maxVisibleRows;
|
||||
$content.css('max-height', maxHeight);
|
||||
}
|
||||
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
function selectRange(s, l) {
|
||||
var tb = $input[0];
|
||||
if (tb.createTextRange) {
|
||||
var r = tb.createTextRange();
|
||||
r.moveStart('character', s);
|
||||
r.moveEnd('character', l - tb.value.length);
|
||||
r.select();
|
||||
} else if (tb.setSelectionRange) {
|
||||
tb.setSelectionRange(s, l);
|
||||
}
|
||||
tb.focus();
|
||||
return true;
|
||||
}
|
||||
|
||||
String.prototype.applyTemplate = function(d) {
|
||||
try {
|
||||
if (d === '') return this;
|
||||
return this.replace(/{([^{}]*)}/g,
|
||||
function(a, b) {
|
||||
var r;
|
||||
if (b.indexOf('.') !== -1) { // handle dot notation in {}, such as {Thumbnail.Url}
|
||||
var ary = b.split('.');
|
||||
var obj = d;
|
||||
for (var i = 0; i < ary.length; i++)
|
||||
obj = obj[ary[i]];
|
||||
r = obj;
|
||||
}
|
||||
else
|
||||
r = d[b];
|
||||
if (typeof r === 'string' || typeof r === 'number') return r; else throw (a);
|
||||
}
|
||||
);
|
||||
} catch (ex) {
|
||||
alert('Invalid JSON property ' + ex + ' found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.');
|
||||
}
|
||||
};
|
||||
|
||||
function hideResults() {
|
||||
$input.data('active', false); // for input blur
|
||||
$div.css('z-index', 0);
|
||||
$ctr.hide();
|
||||
}
|
||||
|
||||
function getCurr() {
|
||||
if (!$ctr.is(':visible'))
|
||||
return false;
|
||||
|
||||
var $curr = $content.children('div.' + o.selectClass);
|
||||
|
||||
if (!$curr.length)
|
||||
$curr = false;
|
||||
|
||||
return $curr;
|
||||
}
|
||||
|
||||
function selectCurr() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr) {
|
||||
$hdn.val($curr.attr('id'));
|
||||
$input.val($curr.attr('val')).focus();
|
||||
hideResults();
|
||||
|
||||
if (o.onSelect) {
|
||||
o.onSelect.apply($input[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function supportsGetBoxObjectFor() {
|
||||
try {
|
||||
document.getBoxObjectFor(document.body);
|
||||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function supportsGetBoundingClientRect() {
|
||||
try {
|
||||
document.body.getBoundingClientRect();
|
||||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function nextPage() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.next().length > 0) {
|
||||
$curr.removeClass(o.selectClass);
|
||||
|
||||
for (var i = 0; i < o.maxVisibleRows; i++) {
|
||||
if ($curr.next().length > 0) {
|
||||
$curr = $curr.next();
|
||||
}
|
||||
}
|
||||
|
||||
$curr.addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop');
|
||||
$content.attr('scrollTop', scrollPos + $content.height());
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:first-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function prevPage() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.prev().length > 0) {
|
||||
$curr.removeClass(o.selectClass);
|
||||
|
||||
for (var i = 0; i < o.maxVisibleRows; i++) {
|
||||
if ($curr.prev().length > 0) {
|
||||
$curr = $curr.prev();
|
||||
}
|
||||
}
|
||||
|
||||
$curr.addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop');
|
||||
$content.attr('scrollTop', scrollPos - $content.height());
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:last-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function nextResult() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.next().length > 0) {
|
||||
$curr.removeClass(o.selectClass).next().addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop'),
|
||||
curr = $curr[0], parentBottom, bottom, height;
|
||||
if (supportsGetBoxObjectFor()) {
|
||||
parentBottom = document.getBoxObjectFor($content[0]).y + $content.attr('offsetHeight');
|
||||
bottom = document.getBoxObjectFor(curr).y + $curr.attr('offsetHeight');
|
||||
height = document.getBoxObjectFor(curr).height;
|
||||
}
|
||||
else if (supportsGetBoundingClientRect()) {
|
||||
parentBottom = $content[0].getBoundingClientRect().bottom;
|
||||
var rect = curr.getBoundingClientRect();
|
||||
bottom = rect.bottom;
|
||||
height = bottom - rect.top;
|
||||
}
|
||||
if (bottom >= parentBottom)
|
||||
$content.attr('scrollTop', scrollPos + height);
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:first-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function prevResult() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.prev().length > 0) {
|
||||
$curr.removeClass(o.selectClass).prev().addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop'),
|
||||
curr = $curr[0],
|
||||
parent = $curr.parent()[0],
|
||||
parentTop, top, height;
|
||||
if (supportsGetBoxObjectFor()) {
|
||||
height = document.getBoxObjectFor(curr).height;
|
||||
parentTop = document.getBoxObjectFor($content[0]).y - (height * 2); // TODO: this is not working when i add another control...
|
||||
top = document.getBoxObjectFor(curr).y - document.getBoxObjectFor($content[0]).y;
|
||||
}
|
||||
else if (supportsGetBoundingClientRect()) {
|
||||
parentTop = parent.getBoundingClientRect().top;
|
||||
var rect = curr.getBoundingClientRect();
|
||||
top = rect.top;
|
||||
height = rect.bottom - top;
|
||||
}
|
||||
if (top <= parentTop)
|
||||
$content.attr('scrollTop', scrollPos - height);
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:last-child').addClass(o.selectClass);
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.flexbox = function(source, options) {
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
try {
|
||||
var defaults = $.fn.flexbox.defaults;
|
||||
var o = $.extend({}, defaults, options);
|
||||
|
||||
for (var prop in o) {
|
||||
if (defaults[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
|
||||
}
|
||||
o.source = source;
|
||||
|
||||
if (options) {
|
||||
o.paging = (options.paging || options.paging == null) ? $.extend({}, defaults.paging, options.paging) : false;
|
||||
|
||||
for (var prop in o.paging) {
|
||||
if (defaults.paging[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
|
||||
}
|
||||
|
||||
if (options.displayValue && !options.hiddenValue) {
|
||||
o.hiddenValue = options.displayValue;
|
||||
}
|
||||
}
|
||||
|
||||
this.each(function() {
|
||||
new $.flexbox(this, o);
|
||||
});
|
||||
|
||||
return this;
|
||||
} catch (ex) {
|
||||
if (typeof ex === 'object') alert(ex.message); else alert(ex);
|
||||
}
|
||||
};
|
||||
|
||||
// plugin defaults - added as a property on our plugin function so they can be set independently
|
||||
$.fn.flexbox.defaults = {
|
||||
method: 'GET', // One of 'GET' or 'POST'
|
||||
queryDelay: 100, // num of milliseconds before query is run.
|
||||
allowInput: true, // set to false to disallow the user from typing in queries
|
||||
containerClass: 'ffb',
|
||||
contentClass: 'content',
|
||||
selectClass: 'ffb-sel',
|
||||
inputClass: 'ffb-input',
|
||||
arrowClass: 'ffb-arrow',
|
||||
matchClass: 'ffb-match',
|
||||
noResultsText: 'No matching results', // text to show when no results match the query
|
||||
noResultsClass: 'ffb-no-results', // class to apply to noResultsText
|
||||
showResults: true, // whether to show results at all, or just typeahead
|
||||
selectFirstMatch: true, // whether to highlight the first matching value
|
||||
autoCompleteFirstMatch: false, // whether to complete the first matching value in the input box
|
||||
highlightMatches: true, // whether all matches within the string should be highlighted with matchClass
|
||||
highlightMatchesRegExModifier: 'i', // 'i' for case-insensitive, 'g' for global (all occurrences), or combine
|
||||
matchAny: true, // for client-side filtering ONLY, match any occurrence of the search term in the result (e.g. "ar" would find "area" and "cart")
|
||||
minChars: 1, // the minimum number of characters the user must enter before a search is executed
|
||||
showArrow: true, // set to false to simulate google suggest
|
||||
arrowQuery: '', // the query to run when the arrow is clicked
|
||||
onSelect: false, // function to run when a result is selected
|
||||
maxCacheBytes: 32768, // in bytes, 0 means caching is disabled
|
||||
resultTemplate: '{name}', // html template for each row (put json properties in curly braces)
|
||||
displayValue: 'name', // json element whose value is displayed on select
|
||||
hiddenValue: 'id', // json element whose value is submitted when form is submitted
|
||||
initialValue: '', // what should the value of the input field be when the form is loaded?
|
||||
initialId: '', // what should the value of the hidden field be when the form is loaded?
|
||||
watermark: '', // text that appears when flexbox is loaded, if no initialValue is specified. style with css class '.ffb-input.watermark'
|
||||
width: 200, // total width of flexbox. auto-adjusts based on showArrow value
|
||||
resultsProperty: 'results', // json property in response that references array of results
|
||||
totalProperty: 'total', // json property in response that references the total results (for paging)
|
||||
maxVisibleRows: 0, // default is 0, which means it is ignored. use either this, or paging.pageSize
|
||||
paging: {
|
||||
style: 'input', // or 'links'
|
||||
cssClass: 'paging', // prefix with containerClass (e.g. .ffb .paging)
|
||||
pageSize: 10, // acts as a threshold. if <= pageSize results, paging doesn't appear
|
||||
maxPageLinks: 5, // used only if style is 'links'
|
||||
showSummary: true, // whether to show 'displaying 1-10 of 200 results' text
|
||||
summaryClass: 'summary', // class for 'displaying 1-10 of 200 results', prefix with containerClass
|
||||
summaryTemplate: 'Displaying {start}-{end} of {total} results' // can use {page} and {pages} as well
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.setValue = function(val) {
|
||||
var id = '#' + this.attr('id');
|
||||
$(id + '_hidden,' + id + '_input').val(val).removeClass('watermark');
|
||||
};
|
||||
})(jQuery);
|
10
data/javascript/jquery.flexbox.min.js
vendored
Normal file
36
data/jhtmlarea/AutoPostTest.aspx
Normal 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
data/jhtmlarea/AutoPostTest.aspx.vb
Normal 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
data/jhtmlarea/ColorPickerMenu.htm
Normal 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>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/Release/ProjectReleases.aspx">Downloads</a>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/Thread/List.aspx">Discussions</a>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/WorkItem/List.aspx">Issue Tracker</a>
|
||||
</p>
|
||||
|
||||
<script type="text/javascript">
|
||||
//// You can also override the "default" colors option of the jHtmlAreaColorPickerMenu
|
||||
//// to show only the specific colors you want.
|
||||
// jHtmlAreaColorPickerMenu.defaultOptions.colors = ["red", "yellow", "blue", "green", "purple", "white", "black"];
|
||||
|
||||
// The followin creates a jHtmlArea and adds a custom list of toolbar buttons.
|
||||
// Among the buttons is the "forecolor" button that will automatically take
|
||||
// advantage of the jHtmlAreaColorPickerMenu plugin.
|
||||
$(function() {
|
||||
$("#Textarea1").htmlarea({
|
||||
toolbar: ["html", "|",
|
||||
"forecolor", // <-- Add the "forecolor" Toolbar Button
|
||||
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<textarea id="Textarea1" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
|
||||
The jHtmlAreaColorPickerMenu object can also be reused for other purposes. For example clicking on the button below will allow you to change the background color of the page.
|
||||
<br />
|
||||
<input id="choosecolor" type="button" value="Choose Color..." />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#choosecolor").click(function() {
|
||||
jHtmlAreaColorPickerMenu(this, {
|
||||
colorChosen: function(color) {
|
||||
$(document.body).css('background-color', color);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<br /><br /><br /><br /><br />
|
||||
<hr />
|
||||
<div style="position: relative;border: solid 30px #cccccc;">
|
||||
<h3>Editor within a "position: relative" DIV element.</h3>
|
||||
<textarea id="txtInDiv" cols="50" rows="15">Some <b>Test</b> content.</textarea>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#txtInDiv").htmlarea({
|
||||
toolbar: ["html", "|",
|
||||
"forecolor", // <-- Add the "forecolor" Toolbar Button
|
||||
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
128
data/jhtmlarea/Default.htm
Normal file
@@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/jquery-ui-1.7.2.custom.min.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jqueryui/ui-lightness/jquery-ui-1.7.2.custom.css" />
|
||||
|
||||
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
|
||||
|
||||
<style type="text/css">
|
||||
/* body { background: #ccc;} */
|
||||
div.jHtmlArea .ToolBar ul li a.custom_disk_button
|
||||
{
|
||||
background: url(images/disk.png) no-repeat;
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jHtmlArea { border: solid 1px #ccc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
// You can do this to perform a global override of any of the "default" options
|
||||
// jHtmlArea.fn.defaultOptions.css = "jHtmlArea.Editor.css";
|
||||
|
||||
$(function() {
|
||||
//$("textarea").htmlarea(); // Initialize all TextArea's as jHtmlArea's with default values
|
||||
|
||||
$("#txtDefaultHtmlArea").htmlarea(); // Initialize jHtmlArea's with all default values
|
||||
|
||||
$("#txtCustomHtmlArea").htmlarea({
|
||||
// Override/Specify the Toolbar buttons to show
|
||||
toolbar: [
|
||||
["bold", "italic", "underline", "|", "forecolor"],
|
||||
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
|
||||
["link", "unlink", "|", "image"],
|
||||
[{
|
||||
// This is how to add a completely custom Toolbar Button
|
||||
css: "custom_disk_button",
|
||||
text: "Save",
|
||||
action: function(btn) {
|
||||
// 'this' = jHtmlArea object
|
||||
// 'btn' = jQuery object that represents the <A> "anchor" tag for the Toolbar Button
|
||||
alert('SAVE!\n\n' + this.toHtmlString());
|
||||
}
|
||||
}]
|
||||
],
|
||||
|
||||
// Override any of the toolbarText values - these are the Alt Text / Tooltips shown
|
||||
// when the user hovers the mouse over the Toolbar Buttons
|
||||
// Here are a couple translated to German, thanks to Google Translate.
|
||||
toolbarText: $.extend({}, jHtmlArea.defaultOptions.toolbarText, {
|
||||
"bold": "fett",
|
||||
"italic": "kursiv",
|
||||
"underline": "unterstreichen"
|
||||
}),
|
||||
|
||||
// Specify a specific CSS file to use for the Editor
|
||||
css: "style//jHtmlArea.Editor.css",
|
||||
|
||||
// Do something once the editor has finished loading
|
||||
loaded: function() {
|
||||
//// 'this' is equal to the jHtmlArea object
|
||||
//alert("jHtmlArea has loaded!");
|
||||
//this.showHTMLView(); // show the HTML view once the editor has finished loading
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<textarea id="txtDefaultHtmlArea" cols="50" rows="15"><p><h3>Test H3</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
<input type="button" value="Alert HTML" onclick="alert($('#txtDefaultHtmlArea').htmlarea('toHtmlString'));" />
|
||||
<input type="button" value="Change Color to Blue" onclick="$('#txtDefaultHtmlArea').htmlarea('forecolor', 'blue');" />
|
||||
|
||||
<br /><hr /><br />
|
||||
|
||||
|
||||
<textarea id="txtCustomHtmlArea" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
|
||||
<input type="button" id="btnRemoveCustomHtmlArea" value="Remove jHtmlArea" />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#btnRemoveCustomHtmlArea").click(function() {
|
||||
$("#txtCustomHtmlArea").htmlarea("dispose");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="button" id="btnResetCustomHtmlArea" value="Reset To Default Options" />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#btnResetCustomHtmlArea").click(function() {
|
||||
$("#txtCustomHtmlArea").htmlarea("dispose");
|
||||
$("#txtCustomHtmlArea").htmlarea();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<br /><hr /><br />
|
||||
|
||||
<h3>Use jHtmlArea within jQuery UI Dialog</h3>
|
||||
<script type="text/javascript">
|
||||
$.ui.dialog.defaults.bgiframe = true;
|
||||
$(function() {
|
||||
$("#dialogShowButton").click(function() {
|
||||
$("#dialog").dialog({width: 420});
|
||||
$("#dialogEditor").htmlarea();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="button" id="dialogShowButton" value="Show Dialog with jHtmlArea Editor" />
|
||||
|
||||
<div id="dialog" title="Basic dialog" style="display: none">
|
||||
Basic jHtmlArea within jQuery UI Dialog
|
||||
<br />
|
||||
<textarea id="dialogEditor" rows="10" style="width: 400px">Some <b>Basic</b> text.</textarea>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>To see a "proper" example of the "Font Color" button, you'll want to see the "<a href="ColorPickerMenu.htm">jHtmlAreaColorPickerMenu</a>" in action here: <a href="ColorPickerMenu.htm">ColorPickerMenu.htm</a></p>
|
||||
</body>
|
||||
</html>
|
117
data/jhtmlarea/Readme.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
/* jHtmlArea - WYSIWYG Html Editor jQuery Plugin
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
|
||||
EXAMPLE USAGE:
|
||||
-----------------------
|
||||
See "Default.htm" for example usages.
|
||||
Or, check out http://jhtmlarea.codeplex.com
|
||||
|
||||
|
||||
CHANGE LOG
|
||||
-----------------------
|
||||
v0.7.0
|
||||
- Fixed ColorPickerMenu positioning when placed within a "position: relative"
|
||||
div element.
|
||||
|
||||
- Fixed ColorPickerMenu to auto-hide after a short delay (1 second) once the
|
||||
user moves the mouse off the menu.
|
||||
|
||||
- Fixed Form Submit issue that caused the text to not be posted. Also fixed a
|
||||
related issue with ASP.NET Postbacks.
|
||||
|
||||
- Added jHtmlArea.p method and "paragraph" functionality + toolbar button
|
||||
This allows the user to change the formatting from <H1>, <H2>, etc. to <P>
|
||||
|
||||
- Added an "Automatic" color option to the ColorPickerMenu.
|
||||
|
||||
|
||||
v0.6.0
|
||||
- Hide All Toolbar buttons except the "html" button when entering
|
||||
HTML Source view (via clicking "html" button or executing
|
||||
jHtmlArea.showHTMLView). When toggling view back to the WYSIWYG editor
|
||||
all other buttons will then be shown again.
|
||||
|
||||
- Added jHtmlArea.dispose method - Allows you to remove the WYSIWYG
|
||||
editor, and go back to having a plain TextArea. Beware, there is a
|
||||
memory leak when using this method; it's not too bad, but you want
|
||||
to call this as few a number of times if you can. The memory leak
|
||||
is due to the way the browsers handle removing DOM Elements.
|
||||
|
||||
- Added Indent and Outdent functionality - This includes toolbar buttons
|
||||
and jHtmlArea.indent and jHtmlArea.outdent buttons.
|
||||
|
||||
- Added justifyLeft, justifyCenter, justifyRight functionality and toolbar
|
||||
buttons.
|
||||
|
||||
- Added insertHorizontalRule functionality and toolbar button. This adds a
|
||||
<hr> tag to the currently selected area.
|
||||
|
||||
- Added an "alias" method for jHtmlArea.execCommand named "ec" to help reduce the
|
||||
file size of the script.
|
||||
|
||||
- Added increaseFontSize and decreaseFontSize functionality and toolbar buttons.
|
||||
The increaseFontSize and decreaseFontSize doesn't currently work in Safari.
|
||||
|
||||
- Added forecolor functionality - Changes a font color for the selection or at the
|
||||
insertion point. Requires a color value string to be passed in as a value argument.
|
||||
|
||||
- Fixed bug in jHtmlArea.toString method
|
||||
|
||||
- Added jHtmlArea.queryCommandValue method and it's alias "jHtmlArea.qc"
|
||||
|
||||
- Added the jHtmlAreaColorPickerMenu plugin/extension that resides within the
|
||||
"jHtmlAreaColorPickerMenu.js" file. This file includes a somewhat generic color
|
||||
picker menu that can be used for any purpose, plus it includes the code to wire
|
||||
up and override the "stock" jHtmlColor.forecolor functionality and inject the new
|
||||
Color Picker Menu functionality in it's place when you click on the "forecolor"
|
||||
toolbar button.
|
||||
|
||||
- Changed the "execCommand" and "ec" second parameter to default to "false" if not
|
||||
specified, and third parameter to default to "null" if not specified. This helps to
|
||||
reduce the overall file size of the script.
|
||||
|
||||
- Added support for Toolbar Button Grouping, now with the additional buttons included
|
||||
in this release, or even when any custom buttons are used, they will be able to display
|
||||
nicely by "auto-wrapping" to the next line.
|
||||
|
||||
- Added a gradient background to the Toolbar Button Groups, with a slight reverse
|
||||
gradient on the Buttons when the mouse is hovered over.
|
||||
|
||||
|
||||
v0.5.0 - Initial Release
|
||||
|
||||
|
||||
|
||||
|
||||
ICONS / IMAGES:
|
||||
-----------------------
|
||||
|
||||
Some of the Icons within the jHtmlArea.png file are from the
|
||||
Silk icon set at www.famfamfam.com.
|
||||
They are licensed under the following license:
|
||||
|
||||
Silk icon set 1.3
|
||||
_________________________________________
|
||||
Mark James
|
||||
http://www.famfamfam.com/lab/icons/silk/
|
||||
_________________________________________
|
||||
|
||||
This work is licensed under a
|
||||
Creative Commons Attribution 2.5 License.
|
||||
[ http://creativecommons.org/licenses/by/2.5/ ]
|
||||
|
||||
This means you may use it for any purpose,
|
||||
and make any changes you like.
|
||||
All I ask is that you include a link back
|
||||
to this page in your credits.
|
||||
|
||||
Are you using this icon set? Send me an email
|
||||
(including a link or picture if available) to
|
||||
mjames@gmail.com
|
||||
|
||||
Any other questions about this icon set please
|
||||
contact mjames@gmail.com
|
BIN
data/jhtmlarea/images/disk.png
Normal file
After ![]() (image error) Size: 620 B |
365
data/jhtmlarea/scripts/jHtmlArea-0.7.0-vsdoc.js
vendored
Normal 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
data/jhtmlarea/scripts/jHtmlArea-0.7.0.js
Normal 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
data/jhtmlarea/scripts/jHtmlArea-0.7.0.min-vsdoc.js
vendored
Normal 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);
|
8
data/jhtmlarea/scripts/jHtmlArea-0.7.0.min.js
vendored
Normal file
189
data/jhtmlarea/scripts/jHtmlArea.ColorPickerMenu-0.7.0.js
Normal file
@@ -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);
|
8
data/jhtmlarea/scripts/jHtmlArea.ColorPickerMenu-0.7.0.min.js
vendored
Normal file
@@ -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);
|
6255
data/jhtmlarea/scripts/jquery-1.3.2-vsdoc.js
vendored
Normal file
4410
data/jhtmlarea/scripts/jquery-1.3.2.js
vendored
Normal file
6255
data/jhtmlarea/scripts/jquery-1.3.2.min-vsdoc.js
vendored
Normal file
53
data/jhtmlarea/scripts/jquery-1.3.2.min.js
vendored
Normal file
298
data/jhtmlarea/scripts/jquery-ui-1.7.2.custom.min.js
vendored
Normal file
6
data/jhtmlarea/style/jHtmlArea.ColorPickerMenu.css
Normal file
@@ -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;}
|
6
data/jhtmlarea/style/jHtmlArea.Editor.css
Normal file
@@ -0,0 +1,6 @@
|
||||
body
|
||||
{
|
||||
background: #000;
|
||||
color: #fff;
|
||||
margin: 2px;
|
||||
}
|
48
data/jhtmlarea/style/jHtmlArea.css
Normal 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;}
|
BIN
data/jhtmlarea/style/jHtmlArea.png
Normal file
After ![]() (image error) Size: 8.2 KiB |
BIN
data/jhtmlarea/style/jHtmlArea_Toolbar_Group_BG.png
Normal file
After ![]() (image error) Size: 964 B |
BIN
data/jhtmlarea/style/jHtmlArea_Toolbar_Group__Btn_Select_BG.png
Normal file
After ![]() (image error) Size: 942 B |
BIN
data/jhtmlarea/style/jqueryui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
Normal file
After ![]() (image error) Size: 260 B |
BIN
data/jhtmlarea/style/jqueryui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
Normal file
After ![]() (image error) Size: 251 B |
After ![]() (image error) Size: 178 B |
After ![]() (image error) Size: 104 B |
After ![]() (image error) Size: 125 B |
After ![]() (image error) Size: 105 B |
BIN
data/jhtmlarea/style/jqueryui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
Normal file
After ![]() (image error) Size: 3.7 KiB |
BIN
data/jhtmlarea/style/jqueryui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
Normal file
After ![]() (image error) Size: 90 B |
BIN
data/jhtmlarea/style/jqueryui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
Normal file
After ![]() (image error) Size: 129 B |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
After ![]() (image error) Size: 4.3 KiB |
406
data/jhtmlarea/style/jqueryui/ui-lightness/jquery-ui-1.7.2.custom.css
vendored
Normal file
@@ -0,0 +1,406 @@
|
||||
/*
|
||||
* jQuery UI CSS Framework
|
||||
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden { display: none; }
|
||||
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
|
||||
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
||||
.ui-helper-clearfix { display: inline-block; }
|
||||
/* required comment for clearfix to work in Opera \*/
|
||||
* html .ui-helper-clearfix { height:1%; }
|
||||
.ui-helper-clearfix { display:block; }
|
||||
/* end clearfix */
|
||||
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* jQuery UI CSS Framework
|
||||
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||
.ui-widget-content a { color: #333333; }
|
||||
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; }
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; }
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; }
|
||||
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; }
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
|
||||
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
|
||||
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
|
||||
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
|
||||
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
|
||||
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion
|
||||
----------------------------------*/
|
||||
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
|
||||
.ui-accordion .ui-accordion-li-fix { display: inline; }
|
||||
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
|
||||
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
|
||||
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
||||
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
|
||||
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
|
||||
----------------------------------*/
|
||||
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
|
||||
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
|
||||
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||
.ui-datepicker select.ui-datepicker-month,
|
||||
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
|
||||
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||
.ui-datepicker td { border: 0; padding: 1px; }
|
||||
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||
|
||||
/* with multiple calendars */
|
||||
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||
.ui-datepicker-row-break { clear:both; width:100%; }
|
||||
|
||||
/* RTL support */
|
||||
.ui-datepicker-rtl { direction: rtl; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
|
||||
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||
.ui-datepicker-cover {
|
||||
display: none; /*sorry for IE5*/
|
||||
display/**/: block; /*sorry for IE5*/
|
||||
position: absolute; /*must have*/
|
||||
z-index: -1; /*must have*/
|
||||
filter: mask(); /*must have*/
|
||||
top: -4px; /*must have*/
|
||||
left: -4px; /*must have*/
|
||||
width: 200px; /*must have*/
|
||||
height: 200px; /*must have*/
|
||||
}/* Dialog
|
||||
----------------------------------*/
|
||||
.ui-dialog { position: relative; padding: .2em; width: 300px; }
|
||||
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
|
||||
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
|
||||
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
|
||||
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||
/* Progressbar
|
||||
----------------------------------*/
|
||||
.ui-progressbar { height:2em; text-align: left; }
|
||||
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
|
||||
----------------------------------*/
|
||||
.ui-resizable { position: relative;}
|
||||
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
|
||||
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
|
||||
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
|
||||
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
|
||||
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
|
||||
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
|
||||
----------------------------------*/
|
||||
.ui-slider { position: relative; text-align: left; }
|
||||
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
|
||||
|
||||
.ui-slider-horizontal { height: .8em; }
|
||||
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||
|
||||
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
|
||||
----------------------------------*/
|
||||
.ui-tabs { padding: .2em; zoom: 1; }
|
||||
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
|
||||
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
|
||||
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
|
||||
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
|
||||
.ui-tabs .ui-tabs-hide { display: none !important; }
|
@@ -474,9 +474,6 @@
|
||||
<code>TORON</code>
|
||||
<code>TORNO</code>
|
||||
<code>TR</code>
|
||||
<temple name="Trujillo, Peru">
|
||||
<code>TRUJI</code>
|
||||
</temple>
|
||||
</temple>
|
||||
<temple name="Tuxtla Gutierrez, Mexico">
|
||||
<code>TGUTI</code>
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.1'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.1.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'cs'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.0.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -13,8 +13,8 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**SYNOPSIS**
|
||||
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *DATABASE*
|
||||
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**--remove=** *FAMILY_TREE_PATTERN*]
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
|
||||
[**-e** | **--export=** *FILE* [**-f** | **--format=** *FORMAT*]]
|
||||
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *OPTION‐
|
||||
STRING*]] [*FILE*] [**--version**]
|
||||
@@ -50,23 +50,23 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
Formats available for export are **gramps-xml** (guessed if *FILE*
|
||||
ends with **.gramps** ), **gedcom** (guessed if *FILE* ends with
|
||||
**.ged** ), or any file export available through the Gramps plugin
|
||||
**.ged** ), or any file export available through the Gramps plugin
|
||||
system.
|
||||
|
||||
Formats available for import are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** (guessed if *FILE* ends with **.gpkg** ),
|
||||
and **geneweb** (guessed if *FILE* ends with **.gw** ).
|
||||
|
||||
Formats available for export are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
|
||||
Formats available for export are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
|
||||
**geneweb**.
|
||||
|
||||
|
||||
**-l**
|
||||
**-l**
|
||||
Print a list of known family trees.
|
||||
|
||||
|
||||
**-L**
|
||||
|
||||
|
||||
**-L**
|
||||
Print a detailed list of known family trees.
|
||||
|
||||
|
||||
@@ -82,22 +82,22 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
|
||||
**-i** , **--import=** *FILE*
|
||||
Import data from *FILE* . If you haven't specified a database, then
|
||||
an empty database is created for you called Family Tree x
|
||||
(where x is an incrementing number).
|
||||
Import data from *FILE* . If you haven't specified a database then
|
||||
a temporary database is used; this is deleted when you exit
|
||||
gramps.
|
||||
|
||||
When more than one input file is given, each has to be preceded
|
||||
by **-i** flag. The files are imported in the specified order, i.e.
|
||||
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
|
||||
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
|
||||
might produce different gramps IDs in the resulting database.
|
||||
|
||||
|
||||
**-e** , **--export=** *FILE*
|
||||
Export data into *FILE* . For **gramps-xml** , **gedcom**
|
||||
, **wft** , **gramps-pkg** , and **geneweb** , the *FILE* is the
|
||||
|
||||
|
||||
**-e** , **--export=** *FICHIER*
|
||||
Export data into *FILE* . For **gramps-xml** , **gedcom**
|
||||
, **wft** , **gramps-pkg** , et **geneweb** , the *FILE* is the
|
||||
name of the resulting file.
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
by **-e** flag. The files are written one by one, in the specified order.
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
|
||||
With or without the **-O** flag, there could be multiple imports, exports,
|
||||
and actions specified further on the command line by using **-i** ,
|
||||
and actions specified further on the command line by using **-i** ,
|
||||
**-e** , and **-a** flags.
|
||||
|
||||
|
||||
@@ -194,46 +194,46 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**EXAMPLES**
|
||||
To open an existing family tree and import an xml file into it, one
|
||||
may type:
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-i** *~/db3.gramps*
|
||||
|
||||
The above changes the opened family tree, to do the same, but import
|
||||
both in a temporary family tree and start an interactive session, one
|
||||
may type:
|
||||
|
||||
|
||||
**gramps -i** *'My Family Tree'* **-i** *~/db3.gramps*
|
||||
|
||||
To import four databases (whose formats can be determined from their
|
||||
names) and then check the resulting database for errors, one may type:
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
**-i** *file4.wft* **-a** *check*
|
||||
|
||||
To explicitly specify the formats in the above example, append file‐
|
||||
names with appropriate **-f** options:
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
|
||||
**-f** *wft* **-a** *check*
|
||||
|
||||
To record the database resulting from all imports, supply **-e** flag (use
|
||||
**-f** if the filename does not allow gramps to guess the format):
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
|
||||
**-f** *gramps-pkg*
|
||||
|
||||
To import three databases and start interactive gramps session with the
|
||||
result:
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
To run the Verify tool from the commandline and output the result to
|
||||
stdout:
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
|
||||
|
||||
Finally, to start normal interactive session type:
|
||||
|
||||
|
||||
**gramps**
|
||||
|
||||
|
||||
@@ -257,20 +257,20 @@ gramps(1) @VERSION@ gramps(1)
|
||||
modification of the main program.
|
||||
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
|
||||
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
|
||||
or *LaTeX* to allow the users to modify the format to suit their needs.
|
||||
|
||||
|
||||
**KNOWN BUGS AND LIMITATIONS**
|
||||
|
||||
**FILES**
|
||||
|
||||
|
||||
*${PREFIX}/bin/gramps*
|
||||
|
||||
*${PREFIX}/lib/python3/dist-packages/gramps/*
|
||||
|
||||
|
||||
*${PREFIX}/lib/python/dist-packages/gramps/*
|
||||
|
||||
*${PREFIX}/share/*
|
||||
|
||||
|
||||
*${HOME}/.gramps*
|
||||
|
||||
|
||||
@@ -290,8 +290,8 @@ gramps(1) @VERSION@ gramps(1)
|
||||
The user documentation is available through standard web browser
|
||||
in the form of Gramps Manual.
|
||||
|
||||
The developer documentation can be found on the
|
||||
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
|
||||
The developer documentation can be found on the
|
||||
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
|
||||
portal.
|
||||
|
||||
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'fr'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.1'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = 'trunk'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -13,10 +13,11 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
**SYNOPSIS**
|
||||
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*]
|
||||
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FICHIER*]
|
||||
[**-e** | **--export=** *FICHIER*] [**--remove=** *FAMILY_TREE_PATTERN*]
|
||||
[**-a** | **--action=** *ACTION* [*-p* | **--options=** *CHAÎNE‐
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
|
||||
[**-e** | **--export=** *FICHIER* [**-f** | **--format=** *FORMAT*]]
|
||||
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *CHAÎNE‐
|
||||
OPTION*]] [*FICHIER*] [**--version**]
|
||||
|
||||
|
||||
@@ -60,7 +61,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**geneweb** .
|
||||
|
||||
|
||||
**-l**
|
||||
**-l**
|
||||
Imprime une liste des arbres familiaux disponibles.
|
||||
|
||||
|
||||
@@ -81,8 +82,8 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
**-i** , **--import=** *FICHIER*
|
||||
Importer des données depuis un *FICHIER* . Si vous n'avez pas
|
||||
spécifié de base de données, alors une base de données vide
|
||||
est utilisée.
|
||||
spécifié de base de données alors une base de données temporaire
|
||||
est utilisée; elle sera effacée quand vous quitterez gramps.
|
||||
|
||||
Quand plus d'un fichier doit être importé, chacun doit être
|
||||
précédé par la commande **-i** . Ces fichiers sont importés dans le
|
||||
@@ -91,11 +92,11 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
|
||||
**-e** , **--export=** *FICHIER*
|
||||
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
|
||||
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
|
||||
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
|
||||
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
|
||||
*FICHIER* est le nom du fichier de sortie.
|
||||
|
||||
Quand plus d'un fichier doit être exporté, chacun doit être
|
||||
|
||||
Quand plus d'un fichier doit être exporté, chacun doit être
|
||||
précédé par la commande **-e** . Ces fichiers sont importés dans le
|
||||
même ordre.
|
||||
|
||||
@@ -120,7 +121,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
**name=name**
|
||||
Cette option est obligatoire, elle détermine quel rapport ou
|
||||
outil sera utilisé. Si le name saisi ne correspond à aucun
|
||||
outil sera utilisé. Si le name saisi ne correspond à aucun
|
||||
module disponible, un message d'erreur sera ajouté.
|
||||
|
||||
**show=all**
|
||||
@@ -183,54 +184,54 @@ gramps(1) @VERSION@ gramps(1)
|
||||
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
|
||||
mémorisées en *stdout* (si elles sont le fait de la manipulation par
|
||||
gramps) ou en *stderr* (si elles ne sont pas le fait d'une manipulation).
|
||||
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
|
||||
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
|
||||
les messages et les erreurs dans les fichiers.
|
||||
|
||||
|
||||
**EXEMPLES**
|
||||
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
|
||||
saisir:
|
||||
|
||||
|
||||
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
|
||||
|
||||
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
|
||||
dans un arbre familial temporaire et démarrer une session interactive,
|
||||
on peut saisir :
|
||||
|
||||
|
||||
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
|
||||
|
||||
Lecture de quatre bases de données dont les formats peuvent être
|
||||
devinés d'après les noms, puis vérification des données:
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
**-i** *file4.wft* **-a** *check*
|
||||
|
||||
|
||||
Si vous voulez préciser lesformats de fichiers dans l'exemple ci-
|
||||
dessus, complétez les noms de fichiers par les options -f appropriées:
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
|
||||
**-f** *wft* **-a** *check*
|
||||
|
||||
Pour enregistrer le résultat des lectures, donnez l'option **-e**
|
||||
|
||||
Pour enregistrer le résultat des lectures, donnez l'option **-e**
|
||||
(utiliser -f si le nom de fichier ne permet pas à gramps de deviner le
|
||||
format):
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
|
||||
**-f** *gramps-pkg*
|
||||
|
||||
Pour lire trois ensembles de données puis lancer une session
|
||||
|
||||
Pour lire trois ensembles de données puis lancer une session
|
||||
interactive de gramps sur le tout :
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
Pour lancer l'outil de vérification de la base de données depuis la
|
||||
ligne de commande et obtenir le résultat :
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
|
||||
|
||||
Enfin, pour lancer une session interactive normale, entrer :
|
||||
|
||||
Enfin, pour lancer une session interactive normale, entrer :
|
||||
|
||||
**gramps**
|
||||
|
||||
|
||||
@@ -264,11 +265,11 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**FICHIERS**
|
||||
|
||||
*${PREFIX}/bin/gramps*
|
||||
|
||||
*${PREFIX}/lib/python3/dist-packages/gramps/*
|
||||
|
||||
|
||||
*${PREFIX}/lib/python/dist-packages/gramps/*
|
||||
|
||||
*${PREFIX}/share/*
|
||||
|
||||
|
||||
*${HOME}/.gramps*
|
||||
|
||||
|
||||
|
@@ -1,8 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH FRENCH "" "" ""
|
||||
.TH "GRAMPS" "1" "28 December 2012" "4.0" "Gramps"
|
||||
.SH NAME
|
||||
French \-
|
||||
gramps \- Gramps Documentation
|
||||
.
|
||||
.nr rst2man-indent-level 0
|
||||
.
|
||||
@@ -30,6 +28,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.INDENT 0.0
|
||||
@@ -42,10 +42,11 @@ données généalogiques)
|
||||
.TP
|
||||
.B \fBSYNOPSIS\fP
|
||||
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP]
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFICHIER\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE‐
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fI...\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE‐
|
||||
OPTION\fP]] [\fIFICHIER\fP] [\fB\-\-version\fP]
|
||||
.TP
|
||||
.B \fBDESCRIPTION\fP
|
||||
@@ -75,16 +76,16 @@ Le format spécifique du \fIFICHIER\fP est précédé par les arguments
|
||||
alors le format sera celui de l\(aqextension ou du type\-MIME.
|
||||
.sp
|
||||
Les formats de sortie disponibles sont \fBgramps\-xml\fP (deviné si
|
||||
\fIFICHIER\fP se termine par \fB\&.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
|
||||
termine par \fB\&.ged\fP ), ou tout autre fichier d\(aqexportation
|
||||
\fIFICHIER\fP se termine par \fB.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
|
||||
termine par \fB.ged\fP ), ou tout autre fichier d\(aqexportation
|
||||
disponible dans le système de plugin Gramps.
|
||||
.sp
|
||||
Les formats disponibles pour l\(aqimportation sont \fBgrdb\fP ,
|
||||
\fBgramps\-xml\fP , \fBgedcom\fP , \fBgramps\-pkg\fP (deviné si \fIFICHIER\fP se termine par
|
||||
\fB\&.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB\&.gw\fP ).
|
||||
\fB.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB.gw\fP ).
|
||||
.sp
|
||||
Les formats disponibles pour l\(aqexportation sont \fBgramps\-xml\fP , \fBged‐
|
||||
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB\&.wft\fP ),
|
||||
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB.wft\fP ),
|
||||
\fBgeneweb\fP .
|
||||
.TP
|
||||
.B \fB\-l\fP
|
||||
@@ -105,8 +106,8 @@ sources, vous devez utiliser l\(aqoption d\(aqimport.
|
||||
.TP
|
||||
.B \fB\-i\fP , \fB\-\-import=\fP \fIFICHIER\fP
|
||||
Importer des données depuis un \fIFICHIER\fP . Si vous n\(aqavez pas
|
||||
spécifié de base de données, alors une base de données vide
|
||||
est utilisée.
|
||||
spécifié de base de données alors une base de données temporaire
|
||||
est utilisée; elle sera effacée quand vous quitterez gramps.
|
||||
.sp
|
||||
Quand plus d\(aqun fichier doit être importé, chacun doit être
|
||||
précédé par la commande \fB\-i\fP . Ces fichiers sont importés dans le
|
||||
@@ -192,7 +193,7 @@ fenêtre et demarrera avec une base vide, puisqu\(aqil n\(aqy a pas données.
|
||||
.sp
|
||||
Si aucune option \fB\-e\fP ou \fB\-a\fP n\(aqest donnée, gramps lancera sa propre
|
||||
fenêtre et démarrera avec la base de données issue de tout les imports.
|
||||
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP\&.
|
||||
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP.
|
||||
.sp
|
||||
Les erreurs rencontrées lors d\(aqimportation, d\(aqexportation, ou d\(aqaction, seront
|
||||
mémorisées en \fIstdout\fP (si elles sont le fait de la manipulation par
|
||||
@@ -301,7 +302,7 @@ besoins
|
||||
.INDENT 3.5
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.sp
|
||||
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
|
||||
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
|
||||
.sp
|
||||
\fI${PREFIX}/share/\fP
|
||||
.sp
|
||||
@@ -311,15 +312,15 @@ besoins
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \fBAUTEURS\fP
|
||||
Donald Allingham <\fI\%don@gramps\-project.org\fP>
|
||||
\fI\%http://gramps\-project.org/\fP
|
||||
Donald Allingham <\fI\%don@gramps-project.org\fP>
|
||||
\fI\%http://gramps-project.org/\fP
|
||||
.sp
|
||||
Cette page man a d\(aqabord été écrite par :
|
||||
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
|
||||
pour Debian GNU/Linux système.
|
||||
.sp
|
||||
Cette page man est maintenue par :
|
||||
Gramps project <\fI\%xxx@gramps\-project.org\fP>
|
||||
Gramps project <\fI\%xxx@gramps-project.org\fP>
|
||||
.sp
|
||||
La traduction française :
|
||||
Jérôme Rapinat <\fI\%romjerome@yahoo.fr\fP>
|
||||
@@ -329,9 +330,13 @@ La documentation\-utilisateur est disponible par un navigateur
|
||||
standard sous la forme du manuel Gramps.
|
||||
.sp
|
||||
La documentation pour développeur est disponible sur le site
|
||||
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP .
|
||||
\fI\%http://www.gramps-project.org/wiki/index.php?title=Portal:Developers\fP .
|
||||
.UNINDENT
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.SH AUTHOR
|
||||
Jerome Rapinat
|
||||
.SH COPYRIGHT
|
||||
2012, Gramps project
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
@@ -1,335 +1,332 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH ENGLISH "" "" ""
|
||||
.TH gramps 1 "@VERSION@" "December 2012" "@VERSION@"
|
||||
.SH NAME
|
||||
English \-
|
||||
.
|
||||
.nr rst2man-indent-level 0
|
||||
.
|
||||
.de1 rstReportMargin
|
||||
\\$1 \\n[an-margin]
|
||||
level \\n[rst2man-indent-level]
|
||||
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
-
|
||||
\\n[rst2man-indent0]
|
||||
\\n[rst2man-indent1]
|
||||
\\n[rst2man-indent2]
|
||||
gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B gramps
|
||||
.RB [ \-?|\-\^\-help ]
|
||||
.RB [ \-\^\-usage ]
|
||||
.RB [ \-\^\-version ]
|
||||
.RB [ \-l ]
|
||||
.RB [ \-u|\-\^\-force-unlock ]
|
||||
.RB [ \-O|\-\^\-open=
|
||||
.IR DATABASE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR ... ]
|
||||
.RB [ \-e|\-\^\-export=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-a|\-\^\-action=
|
||||
.IR ACTION ]
|
||||
.RB [ \-p|\-\^\-options=
|
||||
.IR OPTIONSTRING ]]
|
||||
.RB [
|
||||
.IR FILE
|
||||
.RB ]
|
||||
.if 0 .RB [ bonobo\ options ]
|
||||
.if 0 .RB [ sound\ options ]
|
||||
.RB [ \-\-version ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fIGramps\fP is a Free/OpenSource genealogy program. It is written in Python,
|
||||
using the GTK+/GNOME interface.
|
||||
Gramps should seem familiar to anyone who has used other genealogy programs
|
||||
before such as \fIFamily Tree Maker (TM)\fR, \fIPersonal Ancestral
|
||||
Files (TM)\fR, or the GNU Geneweb.
|
||||
It supports importing of the ever popular GEDCOM format which is used world
|
||||
wide by almost all other genealogy software.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI gramps " FILE"
|
||||
When \fIFILE\fR is given (without any flags) as a family tree name or as
|
||||
a family tree database directory, then it is opened and an interactive
|
||||
session is started. If FILE is a file format understood by Gramps, an empty
|
||||
family tree is created whose name is based on the \fIFILE\fP name
|
||||
and the data is imported into it. The rest of the
|
||||
options is ignored. This way of launching is suitable for using gramps
|
||||
as a handler for genealogical data in e.g. web browsers. This invocation
|
||||
can accept any data format native to gramps, see below.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.BI \-f,\-\^\-format= " FORMAT"
|
||||
Explicitly specify format of \fIFILE\fR given by preceding
|
||||
.ig
|
||||
\fB\-O\fR,
|
||||
..
|
||||
.de1 INDENT
|
||||
.\" .rstReportMargin pre:
|
||||
. RS \\$1
|
||||
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
||||
. nr rst2man-indent-level +1
|
||||
.\" .rstReportMargin post:
|
||||
\fB\-i\fR, or
|
||||
\fB\-e\fR option. If the \fB\-f\fR option is not given for any \fIFILE\fR,
|
||||
the format of that file is guessed according to its extension or MIME-type.
|
||||
.br
|
||||
|
||||
Formats
|
||||
available for export are \fBgramps\-xml\fR (guessed if \fIFILE\fR ends with
|
||||
\fB.gramps\fR), \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR), or
|
||||
any file export available through the Gramps plugin system.
|
||||
.br
|
||||
|
||||
Formats
|
||||
available for import are \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR (guessed if \fIFILE\fR ends with \fB.gpkg\fR), and
|
||||
\fBgeneweb\fR (guessed if \fIFILE\fR ends with \fB.gw\fR).
|
||||
.br
|
||||
|
||||
Formats available for export are
|
||||
.ig
|
||||
\fBgrdb\fR,
|
||||
..
|
||||
.de UNINDENT
|
||||
. RE
|
||||
.\" indent \\n[an-margin]
|
||||
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.nr rst2man-indent-level -1
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \fBNAME\fP
|
||||
gramps \- Genealogical Research and Analysis Management Programming Sys‐
|
||||
tem.
|
||||
.TP
|
||||
.B \fBSYNOPSIS\fP
|
||||
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIDATABASE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFILE\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fIOPTION‐
|
||||
STRING\fP]] [\fIFILE\fP] [\fB\-\-version\fP]
|
||||
.TP
|
||||
.B \fBDESCRIPTION\fP
|
||||
Gramps is a Free/OpenSource genealogy program. It is written in Python,
|
||||
using the GTK+/GNOME interface. Gramps should seem familiar to anyone
|
||||
who has used other genealogy programs before such as Family Tree Maker
|
||||
(TM), Personal Ancestral Files (TM), or the GNU Geneweb. It supports
|
||||
importing of the ever popular GEDCOM format which is used world wide by
|
||||
almost all other genealogy software.
|
||||
.TP
|
||||
.B \fBOPTIONS\fP
|
||||
.INDENT 7.0
|
||||
.TP
|
||||
.B \fBgramps\fP \fIFILE\fP
|
||||
When \fIFILE\fP is given (without any flags) as a family tree name or
|
||||
as a family tree database directory, then it is opened and an
|
||||
interactive session is started. If \fIFILE\fP is a file format under‐
|
||||
stood by Gramps, an empty family tree is created whose name is
|
||||
based on the \fIFILE\fP name and the data is imported into it. The
|
||||
rest of the options is ignored. This way of launching is suit‐
|
||||
able for using gramps as a handler for genealogical data in e.g.
|
||||
web browsers. This invocation can accept any data format native
|
||||
to gramps, see below.
|
||||
.TP
|
||||
.B \fB\-f\fP , \fB\-\-format=\fP \fIFORMAT\fP
|
||||
Explicitly specify format of \fIFILE\fP given by preceding \fB\-i\fP ,
|
||||
or \fB\-e\fP option. If the \fB\-f\fP option is not given for any
|
||||
\fIFILE\fP , the format of that file is guessed according to its extension
|
||||
or MIME\-type.
|
||||
.sp
|
||||
Formats available for export are \fBgramps\-xml\fP (guessed if \fIFILE\fP
|
||||
ends with \fB\&.gramps\fP ), \fBgedcom\fP (guessed if \fIFILE\fP ends with
|
||||
\fB\&.ged\fP ), or any file export available through the Gramps plugin
|
||||
system.
|
||||
.sp
|
||||
Formats available for import are \fBgramps\-xml\fP , \fBgedcom\fP ,
|
||||
\fBgramps\-pkg\fP (guessed if \fIFILE\fP ends with \fB\&.gpkg\fP ),
|
||||
and \fBgeneweb\fP (guessed if \fIFILE\fP ends with \fB\&.gw\fP ).
|
||||
.sp
|
||||
Formats available for export are \fBgramps\-xml\fP , \fBgedcom\fP ,
|
||||
\fBgramps\-pkg\fP , \fBwft\fP (guessed if \fIFILE\fP ends with \fB\&.wft\fP ),
|
||||
\fBgeneweb\fP\&.
|
||||
.TP
|
||||
.B \fB\-l\fP
|
||||
\fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR, \fBwft\fR (guessed if \fIFILE\fR ends with \fB.wft\fR),
|
||||
\fBgeneweb\fR, and \fBiso\fR (never guessed, always specify with
|
||||
\fB\-f\fR option).
|
||||
|
||||
.TP
|
||||
.BI \-l
|
||||
Print a list of known family trees.
|
||||
|
||||
.TP
|
||||
.B \fB\-L\fP
|
||||
Print a detailed list of known family trees.
|
||||
.TP
|
||||
.B \fB\-u\fP , \fB\-\-force\-unlock\fP
|
||||
.BI \-u,\-\^\-force-unlock
|
||||
Unlock a locked database.
|
||||
|
||||
.TP
|
||||
.BI \-O,\-\^\-open= " DATABASE"
|
||||
Open \fIDATABASE\fR which must be an existing database directory or existing family tree name.
|
||||
If no action, import or export options are given on the command line then an interactive session is started using that database.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " FILE"
|
||||
Import data from \fIFILE\fR. If you haven't specified a database then a temporary database is used; this is deleted when you exit gramps.
|
||||
.br
|
||||
|
||||
When more than one input file is given, each has to be preceded by \fB\-i\fR
|
||||
flag. The files are imported in the specified order,
|
||||
i.e. \fB\-i\fR \fIFILE1\fR \fB\-i\fR \fIFILE2\fR
|
||||
and \fB\-i\fR \fIFILE2\fR \fB\-i\fR \fIFILE1\fR might produce different
|
||||
gramps IDs in the resulting database.
|
||||
|
||||
.TP
|
||||
.BI \-e,\-\^\-export= " FILE"
|
||||
Export data into \fIFILE\fR. For \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBwft\fR, \fBgramps\-pkg\fR, and \fBgeneweb\fR, the \fIFILE\fR is
|
||||
the name of the resulting file.
|
||||
.br
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
by \fB\-e\fR flag. The files are written one by one, in the specified order.
|
||||
|
||||
.TP
|
||||
.BI \-a,\-\^\-action= " ACTION"
|
||||
Perform \fIACTION\fR on the imported data. This is done after all imports
|
||||
are successfully completed. Currently available actions are
|
||||
\fBsummary\fR (same as Reports->View->Summary),
|
||||
\fBcheck\fR (same as Tools->Database Processing->Check and Repair),
|
||||
\fBreport\fR (generates report), and
|
||||
\fBtool\fR (runs a plugin tool).
|
||||
Both \fBreport\fR and \fBtool\fR need the \fIOPTIONSTRING\fR supplied by the
|
||||
\fB\-p\fR flag).
|
||||
.br
|
||||
|
||||
The \fIOPTIONSTRING\fR should satisfy the following conditions:
|
||||
.br
|
||||
It must not contain any spaces.
|
||||
If some arguments need to include spaces, the string should
|
||||
be enclosed with quotation marks, i.e., follow the shell syntax.
|
||||
Option string is a list of pairs with name and value (separated by the
|
||||
equality sign). The name and value pairs must be separated by commas.
|
||||
.br
|
||||
|
||||
Most of the report or tools options are specific for each report or tool.
|
||||
However, there are some common options.
|
||||
|
||||
.BI "name=name"
|
||||
.br
|
||||
This mandatory option determines which report or tool will be run.
|
||||
If the supplied \fIname\fR does not correspond to any available report or
|
||||
tool, an error message will be printed followed by the list of
|
||||
available reports or tools (depending on the \fIACTION\fR).
|
||||
|
||||
.BI "show=all"
|
||||
.br
|
||||
This will produce the list of names for all options available for a given
|
||||
report or tool.
|
||||
|
||||
.BI "show="optionname
|
||||
.br
|
||||
This will print the description of
|
||||
the functionality supplied by \fIoptionname\fR, as well as what are the
|
||||
acceptable types and values for this option.
|
||||
|
||||
.br
|
||||
Use the above options to find out
|
||||
everything about a given report.
|
||||
|
||||
.LP
|
||||
When more than one output action is given, each has to be preceded
|
||||
by \fB\-a\fR flag. The actions are performed one by one, in the specified order.
|
||||
|
||||
.TP
|
||||
.BI \-d,\-\^\-debug= " LOGGER_NAME"
|
||||
Enables debug logs for development and testing. Look at the source code for details
|
||||
.TP
|
||||
.B \fB\-O\fP , \fB\-\-open=\fP \fIDATABASE\fP
|
||||
Open \fIDATABASE\fP which must be an existing database directory or
|
||||
existing family tree name. If no action, import or export
|
||||
options are given on the command line then an interactive ses‐
|
||||
sion is started using that database.
|
||||
.TP
|
||||
.B \fB\-i\fP , \fB\-\-import=\fP \fIFILE\fP
|
||||
Import data from \fIFILE\fP . If you haven\(aqt specified a database, then
|
||||
an empty database is created for you called Family Tree x
|
||||
(where x is an incrementing number).
|
||||
.sp
|
||||
When more than one input file is given, each has to be preceded
|
||||
by \fB\-i\fP flag. The files are imported in the specified order, i.e.
|
||||
\fB\-i\fP \fIFILE1\fP \fB\-i\fP \fIFILE2\fP and \fB\-i\fP \fIFILE2\fP \fB\-i\fP \fIFILE1\fP
|
||||
might produce different gramps IDs in the resulting database.
|
||||
.TP
|
||||
.B \fB\-e\fP , \fB\-\-export=\fP \fIFILE\fP
|
||||
Export data into \fIFILE\fP . For \fBgramps\-xml\fP , \fBgedcom\fP
|
||||
, \fBwft\fP , \fBgramps\-pkg\fP , and \fBgeneweb\fP , the \fIFILE\fP is the
|
||||
name of the resulting file.
|
||||
.sp
|
||||
When more than one output file is given, each has to be preceded
|
||||
by \fB\-e\fP flag. The files are written one by one, in the specified order.
|
||||
.TP
|
||||
.B \fB\-a\fP , \fB\-\-action=\fP \fIACTION\fP
|
||||
Perform \fIACTION\fP on the imported data. This is done after all
|
||||
imports are successfully completed. Currently available actions
|
||||
are \fBsummary\fP (same as Reports\->View\->Summary), \fBcheck\fP (same as
|
||||
Tools\->Database Processing\->Check and Repair), \fBreport\fP (generates
|
||||
report), and tool (runs a plugin tool). Both \fBreport\fP and \fBtool\fP
|
||||
need the \fIOPTIONSTRING\fP supplied by the \fB\-p\fP flag).
|
||||
.sp
|
||||
The \fIOPTIONSTRING\fP should satisfy the following conditions:
|
||||
It must not contain any spaces. If some arguments need to
|
||||
include spaces, the string should be enclosed with quotation
|
||||
marks, i.e., follow the shell syntax. Option string is a list
|
||||
of pairs with name and value (separated by the equality sign).
|
||||
The name and value pairs must be separated by commas.
|
||||
.sp
|
||||
Most of the report or tools options are specific for each report
|
||||
or tool. However, there are some common options.
|
||||
.sp
|
||||
\fBname=name\fP
|
||||
This mandatory option determines which report or tool will be
|
||||
run. If the supplied name does not correspond to any available
|
||||
report or tool, an error message will be printed followed by the
|
||||
list of available reports or tools (depending on the \fIACTION\fP ).
|
||||
.sp
|
||||
\fBshow=all\fP
|
||||
This will produce the list of names for all options available
|
||||
for a given report or tool.
|
||||
.sp
|
||||
\fBshow=optionname\fP
|
||||
This will print the description of the functionality supplied by
|
||||
\fIoptionname\fP, as well as what are the acceptable types and values
|
||||
for this option.
|
||||
.sp
|
||||
Use the above options to find out everything about a given
|
||||
report.
|
||||
.UNINDENT
|
||||
.sp
|
||||
When more than one output action is given, each has to be preceded by
|
||||
\fB\-a\fP flag. The actions are performed one by one, in the specified order.
|
||||
.INDENT 7.0
|
||||
.TP
|
||||
.B \fB\-d\fP , \fB\-\-debug=\fP \fILOGGER_NAME\fP
|
||||
Enables debug logs for development and testing. Look at the
|
||||
source code for details
|
||||
.TP
|
||||
.B \fB\-\-version\fP
|
||||
.BI \-\^\-version
|
||||
Prints the version number of gramps and then exits
|
||||
.UNINDENT
|
||||
\" change 0 to 1 to enable output of OAF options
|
||||
.if 0 \{
|
||||
.PP
|
||||
The following options are used for Bonobo activation.
|
||||
.TP
|
||||
.BI \-\^\-oaf-ior-fd= "FD"
|
||||
File descriptor to print the OAF IOR on
|
||||
.TP
|
||||
.BI \-\^\-oaf-activate-iid= " IID"
|
||||
OAF IID to activate
|
||||
.TP
|
||||
.BI \-\^\-oaf-private
|
||||
Prevent registering of server with OAF
|
||||
\}
|
||||
\" change 0 to 1 to enable output of Gnome sound options
|
||||
.if 0 \{
|
||||
.PP
|
||||
The following options are used for controlling sound using the Gnome Library.
|
||||
.TP
|
||||
.B \fBOperation\fP
|
||||
If the first argument on the command line does not start with dash
|
||||
(i.e. no flag), gramps will attempt to open the file with the name
|
||||
given by the first argument and start interactive session, ignoring the
|
||||
rest of the command line arguments.
|
||||
.sp
|
||||
If the \fB\-O\fP flag is given, then gramps will try opening the supplied
|
||||
database and then work with that data, as instructed by the further
|
||||
command line parameters.
|
||||
.sp
|
||||
With or without the \fB\-O\fP flag, there could be multiple imports, exports,
|
||||
and actions specified further on the command line by using \fB\-i\fP ,
|
||||
\fB\-e\fP , and \fB\-a\fP flags.
|
||||
.sp
|
||||
The order of \fB\-i\fP , \fB\-e\fP , or \fB\-a\fP options does not matter. The actual order
|
||||
always is: all imports (if any) \-> all actions (if any) \-> all exports
|
||||
(if any). But opening must always be first!
|
||||
.sp
|
||||
If no \fB\-O\fP or \fB\-i\fP option is given, gramps will launch its main window and
|
||||
start the usual interactive session with the empty database, since
|
||||
there is no data to process, anyway.
|
||||
.sp
|
||||
If no \fB\-e\fP or \fB\-a\fP options are given, gramps will launch its main window
|
||||
and start the usual interactive session with the database resulted from
|
||||
all imports. This database resides in the \fBimport_db.grdb\fP under
|
||||
\fB~/.gramps/import\fP directory.
|
||||
.sp
|
||||
The error encountered during import, export, or action, will be either
|
||||
dumped to stdout (if these are exceptions handled by gramps) or to
|
||||
\fIstderr\fP (if these are not handled). Use usual shell redirections of
|
||||
\fIstdout\fP and \fIstderr\fP to save messages and errors in files.
|
||||
.BI \-\^\-disable-sound
|
||||
Disable sound server usage
|
||||
.TP
|
||||
.B \fBEXAMPLES\fP
|
||||
To open an existing family tree and import an xml file into it, one
|
||||
may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
The above changes the opened family tree, to do the same, but import
|
||||
both in a temporary family tree and start an interactive session, one
|
||||
may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To import four databases (whose formats can be determined from their
|
||||
names) and then check the resulting database for errors, one may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
\fB\-i\fP \fIfile4.wft\fP \fB\-a\fP \fIcheck\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To explicitly specify the formats in the above example, append file‐
|
||||
names with appropriate \fB\-f\fP options:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-f\fP \fIgedcom\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-f\fP
|
||||
\fIgramps\-pkg\fP \fB\-i\fP \fI~/db3.gramps\fP \fB\-f\fP \fIgramps\-xml\fP \fB\-i\fP \fIfile4.wft\fP
|
||||
\fB\-f\fP \fIwft\fP \fB\-a\fP \fIcheck\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To record the database resulting from all imports, supply \fB\-e\fP flag (use
|
||||
\fB\-f\fP if the filename does not allow gramps to guess the format):
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-e\fP \fI~/new\-package\fP
|
||||
\fB\-f\fP \fIgramps\-pkg\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To import three databases and start interactive gramps session with the
|
||||
result:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To run the Verify tool from the commandline and output the result to
|
||||
stdout:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-a\fP \fItool\fP \fB\-p name=\fP \fIverify\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
Finally, to start normal interactive session type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.BI \-\^\-enable-sound
|
||||
Enable sound server usage
|
||||
.TP
|
||||
.B \fBENVIRONMENT VARIABLES\fP
|
||||
.BI \-\^\-espeaker= " HOSTNAME:PORT"
|
||||
Host:port on which the sound server to use is running
|
||||
\}
|
||||
|
||||
.SH "Operation"
|
||||
.br
|
||||
If the first argument on the command line does not start with dash (i.e. no
|
||||
flag), gramps will attempt to open the file with the name given by the first
|
||||
argument and start interactive session, ignoring the rest of the command line
|
||||
arguments.
|
||||
|
||||
.LP
|
||||
If the \fB\-O\fR flag is given, then gramps will try opening
|
||||
the supplied database and then work with that data, as instructed by the
|
||||
further command line parameters.
|
||||
|
||||
.LP
|
||||
With or without the \fB\-O\fR flag, there could be multiple imports,
|
||||
exports, and actions specified further on the command line by using \fB\-i\fR,
|
||||
\fB\-e\fR, and \fB\-a\fR flags.
|
||||
|
||||
.LP
|
||||
The order of \fB\-i\fR, \fB\-e\fR, or \fB\-a\fR options does not matter. The
|
||||
actual order always is: all imports (if any) -> all actions (if any)
|
||||
-> all exports (if any). But opening must always be first!
|
||||
|
||||
.LP
|
||||
If no \fB\-O\fR or \fB\-i\fR option is given, gramps will launch its main
|
||||
window and start the usual interactive session with the empty database,
|
||||
since there is no data to process, anyway.
|
||||
|
||||
.LP
|
||||
If no \fB\-e\fR or \fB\-a\fR options are given, gramps will launch its main
|
||||
window and start the usual interactive session with the database resulted
|
||||
from all imports. This database resides in the \fBimport_db.grdb\fR
|
||||
under \fB~/.gramps/import\fR directory.
|
||||
|
||||
.LP
|
||||
The error encountered during import, export, or action, will be either
|
||||
dumped to \fIstdout\fR (if these are exceptions handled by gramps) or
|
||||
to \fIstderr\fR (if these are not handled). Use usual shell redirections
|
||||
of \fIstdout\fR and \fIstderr\fR to save messages and errors in files.
|
||||
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
To open an existing family tree and import an xml file into it, one may type:
|
||||
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
The above changes the opened family tree, to do the same, but import both in a temporary family tree and start an interactive session, one may type:
|
||||
\fBgramps\fR \fB\-i\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
To import four databases (whose formats can be determined from their names) and then check the resulting database for errors, one may type:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To explicitly specify the formats in the above example, append filenames with appropriate \fB\-f\fR options:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To record the database resulting from all imports, supply \fB\-e\fR flag (use \fB\-f\fR if the filename does not allow gramps to guess the format):
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-e\fR \fI~/new-package\fR \fB\-f\fR \fIgramps-pkg\fR
|
||||
.TP
|
||||
To import three databases and start interactive gramps session with the result:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
To run the Verify tool from the commandline and output the result to stdout:
|
||||
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB-a\fR \fItool\fR \fB-p\fR \fBname\fR=\fIverify\fR
|
||||
.TP
|
||||
Finally, to start normal interactive session type:
|
||||
\fBgramps\fR
|
||||
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
The program checks whether these environment variables are set:
|
||||
.sp
|
||||
\fBLANG\fP \- describe, which language to use: Ex.: for polish language this
|
||||
variable has to be set to pl_PL.UTF\-8.
|
||||
.sp
|
||||
\fBGRAMPSHOME\fP \- if set, force Gramps to use the specified directory to
|
||||
keep program settings and databases there. By default, this variable is
|
||||
not set and gramps assumes that the folder with all databases and pro‐
|
||||
file settings should be created within the user profile folder
|
||||
(described by environment variable HOME for Linux or USERPROFILE for
|
||||
Windows 2000/XP).
|
||||
.TP
|
||||
.B \fBCONCEPTS\fP
|
||||
Supports a python\-based plugin system, allowing import and export writ‐
|
||||
ers, report generators, tools, and display filters to be added without
|
||||
modification of the main program.
|
||||
.sp
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as \fILibreOffice.org\fP , \fIAbiWord\fP , \fIHTML\fP,
|
||||
or \fILaTeX\fP to allow the users to modify the format to suit their needs.
|
||||
.UNINDENT
|
||||
.sp
|
||||
\fBKNOWN BUGS AND LIMITATIONS\fP
|
||||
.sp
|
||||
\fBFILES\fP
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
|
||||
\fBLANG\fR - describe, which language to use:
|
||||
Ex.: for polish language this variable has to be set to pl_PL.UTF-8.
|
||||
|
||||
\fBGRAMPSHOME\fR - if set, force Gramps to use the specified directory to keep
|
||||
program settings and databases there. By default, this variable is not set and
|
||||
gramps assumes that the folder with all databases and profile settings
|
||||
should be created within the user profile folder (described by environment
|
||||
variable HOME for Linux or USERPROFILE for Windows 2000/XP).
|
||||
|
||||
.SH CONCEPTS
|
||||
Supports a python\-based plugin system, allowing import and export writers,
|
||||
report generators, tools, and display filters to be added without modification
|
||||
of the main program.
|
||||
.LP
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML,
|
||||
or LaTeX to allow the users to modify the format to suit their needs.
|
||||
|
||||
.SH KNOWN BUGS AND LIMITATIONS
|
||||
|
||||
.SH FILES
|
||||
.LP
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.sp
|
||||
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
|
||||
.sp
|
||||
.br
|
||||
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
|
||||
.br
|
||||
\fI${PREFIX}/share/\fP
|
||||
.sp
|
||||
\fI${HOME}/.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \fBAUTHORS\fP
|
||||
Donald Allingham <\fI\%don@gramps\-project.org\fP>
|
||||
\fI\%http://gramps\-project.org/\fP
|
||||
.sp
|
||||
.br
|
||||
\fI${HOME}/.gramps\fP
|
||||
|
||||
.SH AUTHORS
|
||||
Donald Allingham \fI<don@gramps-project.org>\fR
|
||||
.br
|
||||
\fIhttp://gramps.sourceforge.net\fR
|
||||
.LP
|
||||
This man page was originally written by:
|
||||
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
|
||||
.br
|
||||
Brandon L. Griffith \fI<brandon@debian.org>\fR
|
||||
.br
|
||||
for inclusion in the Debian GNU/Linux system.
|
||||
.sp
|
||||
.LP
|
||||
This man page is currently maintained by:
|
||||
Gramps project <\fI\%xxx@gramps\-project.org\fP>
|
||||
.TP
|
||||
.B \fBDOCUMENTATION\fP
|
||||
The user documentation is available through standard web browser
|
||||
in the form of Gramps Manual.
|
||||
.sp
|
||||
.br
|
||||
Gramps project \fI<xxx@gramps-project.org>\fR
|
||||
.br
|
||||
|
||||
.SH DOCUMENTATION
|
||||
The user documentation is available through standard GNOME Help browser
|
||||
in the form of Gramps Manual. The manual is also available in XML format
|
||||
as \fBgramps-manual.xml\fR under \fIdoc/gramps-manual/$LANG\fR in the official
|
||||
source distribution.
|
||||
.LP
|
||||
The developer documentation can be found on the
|
||||
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP
|
||||
portal.
|
||||
.UNINDENT
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
\fIhttp://developers.gramps-project.org\fR site.
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'nl'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.0.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'pl'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.0.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'pt_BR'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.0.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -41,16 +41,16 @@ master_doc = 'sv'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Gramps'
|
||||
copyright = u'2015, Gramps project'
|
||||
copyright = u'2012, Gramps project'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '4.2'
|
||||
version = '4.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '4.2.0'
|
||||
release = '4.0.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@@ -24,7 +24,7 @@
|
||||
"""
|
||||
update_man.py for command line documentation.
|
||||
|
||||
Examples:
|
||||
Examples:
|
||||
python update_man.py -t
|
||||
|
||||
Tests if 'sphinx' and 'python' are well configured.
|
||||
@@ -43,13 +43,13 @@ except:
|
||||
DOCUTILS = False
|
||||
|
||||
LANGUAGES = ['sv', 'nl', 'pl', 'cs', 'pt_BR', 'fr']
|
||||
VERSION = '5.0.0'
|
||||
VERSION = '4.0.0'
|
||||
DATE = ''
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXBUILD = 'sphinx-build'
|
||||
|
||||
if sys.platform == 'win32':
|
||||
if sys.platform == 'win32':
|
||||
pythonCmd = os.path.join(sys.prefix, 'bin', 'python.exe')
|
||||
sphinxCmd = os.path.join(sys.prefix, 'bin', 'sphinx-build.exe')
|
||||
elif sys.platform in ['linux2', 'darwin', 'cygwin']:
|
||||
@@ -70,13 +70,13 @@ def tests():
|
||||
os.system('''%(program)s -V''' % {'program': pythonCmd})
|
||||
except:
|
||||
print ('Please, install python')
|
||||
|
||||
|
||||
try:
|
||||
print("\n=================='Sphinx-build'=============================\n")
|
||||
print("\n=================='Shpinx-build'=============================\n")
|
||||
os.system('''%(program)s''' % {'program': sphinxCmd})
|
||||
except:
|
||||
print ('Please, install sphinx')
|
||||
|
||||
|
||||
if not DOCUTILS:
|
||||
print('\nNo docutils support, cannot use -m/--man and -o/--odt arguments.')
|
||||
|
||||
@@ -85,49 +85,49 @@ def main():
|
||||
The utility for handling documentation stuff.
|
||||
What is need by Gramps, nothing more.
|
||||
"""
|
||||
|
||||
parser = ArgumentParser(
|
||||
description='This program aims to handle documentation'
|
||||
' and related translated versions.',
|
||||
|
||||
parser = ArgumentParser(
|
||||
description='This program aims to handle documentation'
|
||||
' and realted translated versions.',
|
||||
)
|
||||
|
||||
|
||||
parser.add_argument("-t", "--test",
|
||||
action="store_true", dest="test", default=True,
|
||||
help="test if 'python' and 'sphinx' are properly installed")
|
||||
|
||||
|
||||
parser.add_argument("-b", "--build",
|
||||
action="store_true", dest="build", default=False,
|
||||
help="build man documentation (via sphinx-build)")
|
||||
|
||||
|
||||
parser.add_argument("-m", "--man",
|
||||
action="store_true", dest="man", default=False,
|
||||
help="build man documentation (via docutils)")
|
||||
|
||||
|
||||
parser.add_argument("-o", "--odt",
|
||||
action="store_true", dest="odt", default=False,
|
||||
help="build odt documentation (via docutils)")
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
if args.test:
|
||||
tests()
|
||||
|
||||
|
||||
if args.build:
|
||||
build()
|
||||
|
||||
|
||||
if args.man and DOCUTILS:
|
||||
man()
|
||||
|
||||
|
||||
if args.odt and DOCUTILS:
|
||||
odt()
|
||||
|
||||
|
||||
def build():
|
||||
"""
|
||||
Build documentation.
|
||||
"""
|
||||
|
||||
|
||||
# testing stage
|
||||
|
||||
|
||||
os.system('''%(program)s -b html . _build/html''' % {'program': sphinxCmd})
|
||||
os.system('''%(program)s -b htmlhelp . _build/htmlhelp''' % {'program': sphinxCmd})
|
||||
if DOCUTILS:
|
||||
@@ -136,48 +136,48 @@ def build():
|
||||
os.system('''%(program)s -b changes . _build/changes''' % {'program': sphinxCmd})
|
||||
#os.system('''%(program)s -b linkcheck . _build/linkcheck''' % {'program': sphinxCmd})
|
||||
os.system('''%(program)s -b gettext . _build/gettext''' % {'program': sphinxCmd})
|
||||
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
if DOCUTILS:
|
||||
os.system('''%(program)s -b man %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b man %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
# for update/migration
|
||||
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
|
||||
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
|
||||
|
||||
def man():
|
||||
"""
|
||||
man file generation via docutils (python)
|
||||
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
from docutils.writers import manpage
|
||||
"""
|
||||
|
||||
os.system('''rst2man en.rst gramps.1''')
|
||||
|
||||
|
||||
os.system('''rst2man en.rst gramps.1''')
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
|
||||
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
|
||||
% {'lang': lang})
|
||||
|
||||
|
||||
def odt():
|
||||
"""
|
||||
odt file generation via docutils (python)
|
||||
|
||||
|
||||
from docutils.core import publish_cmdline_to_binary, default_description
|
||||
from docutils.writers.odf_odt import Writer, Reader
|
||||
"""
|
||||
|
||||
os.system('''rst2odt en.rst gramps.odt''')
|
||||
|
||||
|
||||
os.system('''rst2odt en.rst gramps.odt''')
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
|
||||
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
|
||||
% {'lang': lang})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|