CSS and web resources are now a plugin
svn: r15711
@ -147,6 +147,7 @@ src/plugins/textreport/Makefile
|
||||
src/plugins/tool/Makefile
|
||||
src/plugins/view/Makefile
|
||||
src/plugins/webreport/Makefile
|
||||
src/plugins/webstuff/Makefile
|
||||
src/DateHandler/Makefile
|
||||
src/data/Makefile
|
||||
src/glade/Makefile
|
||||
|
@ -1066,8 +1066,6 @@ class PluginRegister(object):
|
||||
rmlist = []
|
||||
ind = lenpd-1
|
||||
for plugin in self.__plugindata[lenpd:]:
|
||||
if plugin.category == 'TEST':
|
||||
import pdb; pdb.set_trace()
|
||||
ind += 1
|
||||
plugin.directory = dir
|
||||
if not valid_plugin_version(plugin.gramps_target_version):
|
||||
|
@ -57,32 +57,3 @@ book_categories = {
|
||||
CATEGORY_DRAW : _("Graphics"),
|
||||
}
|
||||
|
||||
#Common data for html reports
|
||||
## TODO: move to a system where css files are registered
|
||||
# This information defines the list of styles in the Web reports
|
||||
# options dialog as well as the location of the corresponding
|
||||
# stylesheets in src/data.
|
||||
|
||||
CSS_FILES = [
|
||||
# id, user selectable, translated_name, fullpath, navigation target name, additional files
|
||||
# "default" is used as default
|
||||
["Basic-Ash", 1, _("Basic-Ash"), os.path.join(const.DATA_DIR, 'Web_Basic-Ash.css'), None, []],
|
||||
["Basic-Blue", 1, _("Basic-Blue"), os.path.join(const.DATA_DIR, 'Web_Basic-Blue.css'), "navigation-menus.css", []],
|
||||
["Basic-Cypress", 1, _("Basic-Cypress"), os.path.join(const.DATA_DIR, 'Web_Basic-Cypress.css'), None, []],
|
||||
["Basic-Lilac", 1, _("Basic-Lilac"), os.path.join(const.DATA_DIR, 'Web_Basic-Lilac.css'), None, []],
|
||||
["Basic-Peach", 1, _("Basic-Peach"), os.path.join(const.DATA_DIR, 'Web_Basic-Peach.css'), None, []],
|
||||
["Basic-Spruce", 1, _("Basic-Spruce"), os.path.join(const.DATA_DIR, 'Web_Basic-Spruce.css'), None, []],
|
||||
["Mainz", 1, _("Mainz"), os.path.join(const.DATA_DIR, 'Web_Mainz.css'), None,
|
||||
[os.path.join(const.IMAGE_DIR, "Web_Mainz_Bkgd.png"),
|
||||
os.path.join(const.IMAGE_DIR, "Web_Mainz_Header.png"),
|
||||
os.path.join(const.IMAGE_DIR, "Web_Mainz_Mid.png"),
|
||||
os.path.join(const.IMAGE_DIR, "Web_Mainz_MidLight.png")]],
|
||||
["Nebraska", 1, _("Nebraska"), os.path.join(const.DATA_DIR, 'Web_Nebraska.css'), None, []],
|
||||
["Visually Impaired", 1, _("Visually Impaired"), os.path.join(const.DATA_DIR, 'Web_Visually.css'), "navigation-menus.css", []],
|
||||
["No style sheet",1, _("No style sheet"), '', None, []],
|
||||
["behaviour", 0, "Behaviour", os.path.join(const.DATA_DIR, 'behaviour.css'), None, []],
|
||||
["default", 0, _("Basic-Ash"), os.path.join(const.DATA_DIR, 'Web_Basic-Ash.css'), None, []],
|
||||
["Print-Default", 0, "Print-Default", os.path.join(const.DATA_DIR, 'Web_Print-Default.css'), None, []],
|
||||
["Navigation-Vertical", 0, "Navigation-Vertical", os.path.join(const.DATA_DIR, 'Web_Navigation-Vertical.css'), None, []],
|
||||
["Navigation-Horizontal", 0, "Navigation-Horizontal", os.path.join(const.DATA_DIR, 'Web_Navigation-Horizontal.css'), None, []],
|
||||
]
|
||||
|
@ -43,8 +43,9 @@ import gtk
|
||||
#-------------------------------------------------------------------------
|
||||
import const
|
||||
from _reportdialog import ReportDialog
|
||||
from gen.plug.report._constants import CSS_FILES
|
||||
from _papermenu import PaperFrame
|
||||
from gui.pluginmanager import GuiPluginManager
|
||||
PLUGMAN = GuiPluginManager.get_instance()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -63,12 +64,14 @@ class DocReportDialog(ReportDialog):
|
||||
|
||||
self.style_name = "default"
|
||||
self.firstpage_added = False
|
||||
self.CSS = PLUGMAN.process_plugin_data('WEBSTUFF')
|
||||
ReportDialog.__init__(self, dbstate, uistate, option_class,
|
||||
name, trans_name)
|
||||
|
||||
# Allow for post processing of the format frame, since the
|
||||
# show_all task calls events that may reset values
|
||||
|
||||
|
||||
def init_interface(self):
|
||||
ReportDialog.init_interface(self)
|
||||
self.doc_type_changed(self.format_menu)
|
||||
@ -93,8 +96,7 @@ class DocReportDialog(ReportDialog):
|
||||
self.doc = self.format(self.selected_style, pstyle)
|
||||
if not self.format_menu.get_active_plugin().get_paper_used():
|
||||
#set css filename
|
||||
self.doc.set_css_filename(const.DATA_DIR + os.sep +
|
||||
self.css_filename)
|
||||
self.doc.set_css_filename(self.css_filename)
|
||||
|
||||
self.options.set_document(self.doc)
|
||||
|
||||
@ -206,11 +208,15 @@ class DocReportDialog(ReportDialog):
|
||||
css_filename = self.options.handler.get_css_filename()
|
||||
active_index = 0
|
||||
index = 0
|
||||
for style in CSS_FILES:
|
||||
self.css_combo.append_text(style[0])
|
||||
if css_filename == style[1]:
|
||||
active_index = index
|
||||
index += 1
|
||||
for (name, id) in sorted([(self.CSS[key]["translation"], self.CSS[key]["id"])
|
||||
for key in self.CSS]):
|
||||
if self.CSS[id]["user"]:
|
||||
self.css_combo.append_text(self.CSS[id]["translation"])
|
||||
# Associate this index number with CSS too:
|
||||
self.CSS[index] = self.CSS[id]
|
||||
if css_filename == self.CSS[id]["filename"]:
|
||||
active_index = index
|
||||
index += 1
|
||||
|
||||
self.html_table.attach(self.css_combo,2,3,1,2, yoptions=gtk.SHRINK)
|
||||
self.css_combo.set_active(active_index)
|
||||
@ -230,7 +236,7 @@ class DocReportDialog(ReportDialog):
|
||||
displayed on the screen. The subclass will know whether this
|
||||
entry was enabled. This is for simplicity of programming."""
|
||||
|
||||
self.css_filename = CSS_FILES[self.css_combo.get_active()][1]
|
||||
self.css_filename = self.CSS[self.css_combo.get_active()]["filename"]
|
||||
self.options.handler.set_css_filename(self.css_filename)
|
||||
|
||||
def on_ok_clicked(self, obj):
|
||||
|
@ -18,7 +18,8 @@ SUBDIRS = \
|
||||
textreport \
|
||||
tool \
|
||||
view \
|
||||
webreport
|
||||
webreport \
|
||||
webstuff
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/plugins
|
||||
|
||||
|
@ -81,7 +81,7 @@ import Sort
|
||||
from gen.plug.menu import PersonOption, NumberOption, StringOption, \
|
||||
BooleanOption, EnumeratedListOption, FilterOption, \
|
||||
NoteOption, MediaOption, DestinationOption
|
||||
from gen.plug.report import ( Report, Bibliography, CSS_FILES )
|
||||
from gen.plug.report import ( Report, Bibliography)
|
||||
from gen.plug.report import utils as ReportUtils
|
||||
from gui.plug.report import MenuReportOptions
|
||||
|
||||
@ -107,6 +107,8 @@ from libhtmlbackend import HtmlBackend
|
||||
|
||||
from libgedcom import make_gedcom_date
|
||||
from PlaceUtils import conv_lat_lon
|
||||
from gui.pluginmanager import GuiPluginManager
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
# constants
|
||||
#------------------------------------------------------------------------
|
||||
@ -192,17 +194,8 @@ _html_replacement = {
|
||||
"<" : "<",
|
||||
}
|
||||
|
||||
def make_css_dict(tup):
|
||||
return {
|
||||
"id": tup[0],
|
||||
"user": tup[1],
|
||||
"translation": tup[2],
|
||||
"filename": tup[3],
|
||||
"navigation": tup[4],
|
||||
"images": tup[5],
|
||||
}
|
||||
|
||||
CSS = dict([(css[0], make_css_dict(css)) for css in CSS_FILES])
|
||||
PLUGMAN = GuiPluginManager.get_instance()
|
||||
CSS = PLUGMAN.process_plugin_data('WEBSTUFF')
|
||||
|
||||
# This command then defines the 'html_escape' option for escaping
|
||||
# special characters for presentation in HTML based on the above list.
|
||||
@ -307,9 +300,9 @@ def copy_thumbnail(report, handle, photo, region=None):
|
||||
photo.get_mime_type(),
|
||||
region)
|
||||
if not os.path.isfile(from_path):
|
||||
from_path = os.path.join(const.IMAGE_DIR, "document.png")
|
||||
from_path = CSS["Document"]["filename"]
|
||||
else:
|
||||
from_path = os.path.join(const.IMAGE_DIR, "document.png")
|
||||
from_path = CSS["Document"]["filename"]
|
||||
report.copy_file(from_path, to_path)
|
||||
return to_path
|
||||
|
||||
@ -1146,7 +1139,7 @@ class BasePage(object):
|
||||
)
|
||||
|
||||
# Link to Navigation Menus stylesheet
|
||||
if CSS[self.report.css]["navigation"]: # in ["Web_Basic-Blue.css", "Web_Visually.css"]:
|
||||
if CSS[self.report.css]["navigation"]:
|
||||
fname = "/".join(["styles", CSS[self.report.css]["navigation"]])
|
||||
url = self.report.build_url_fname(fname, None, self.up)
|
||||
links += Html("link", href = url, type = "text/css", media = "screen", rel = "stylesheet", indent = False)
|
||||
@ -5699,7 +5692,7 @@ class NavWebReport(Report):
|
||||
"""
|
||||
|
||||
# copy behaviour style sheet
|
||||
fname = CSS["behaviour"]["filename"] # "behaviour.css")
|
||||
fname = CSS["behaviour"]["filename"]
|
||||
self.copy_file(fname, "behaviour.css", "styles")
|
||||
|
||||
# copy screen style sheet
|
||||
@ -5708,11 +5701,11 @@ class NavWebReport(Report):
|
||||
self.copy_file(fname, _NARRATIVESCREEN, "styles")
|
||||
|
||||
# copy Navigation Menu Layout style sheet if Blue or Visually is being used
|
||||
if CSS[self.css]["navigation"]: #== "Web_Basic-Blue.css" or "Web_Visually.css":
|
||||
if CSS[self.css]["navigation"]:
|
||||
if self.navigation == "Horizontal":
|
||||
fname = CSS["Navigation-Horizontal"]["filename"] #"Web_Navigation-Horizontal.css")
|
||||
fname = CSS["Navigation-Horizontal"]["filename"]
|
||||
else:
|
||||
fname = CSS["Navigation-Vertical"]["filename"] # "Web_Navigation-Vertical.css")
|
||||
fname = CSS["Navigation-Vertical"]["filename"]
|
||||
self.copy_file(fname, "navigation-menus.css", "styles")
|
||||
|
||||
# copy Mapstraction style sheet if using Place Maps
|
||||
@ -5721,7 +5714,7 @@ class NavWebReport(Report):
|
||||
self.copy_file(fname, "mapstraction.css", "styles")
|
||||
|
||||
# copy printer style sheet
|
||||
fname = CSS["Print-Default"]["filename"] # "Web_Print-Default.css")
|
||||
fname = CSS["Print-Default"]["filename"]
|
||||
self.copy_file(fname, _NARRATIVEPRINT, "styles")
|
||||
|
||||
# copy mapstraction files to mapstraction directory
|
||||
@ -5745,31 +5738,21 @@ class NavWebReport(Report):
|
||||
# Copy the Creative Commons icon if the Creative Commons
|
||||
# license is requested
|
||||
if 0 < self.copyright <= len(_CC):
|
||||
imgs += ["somerights20.gif"]
|
||||
imgs += [CSS["Copyright"]["filename"]]
|
||||
|
||||
# include GRAMPS favicon
|
||||
imgs += ["favicon2.ico"]
|
||||
|
||||
# we need the blank image gif neede by behaviour.css
|
||||
imgs += ["blank.gif"]
|
||||
|
||||
# add the document.png file for media other than photos
|
||||
imgs += ["document.png"]
|
||||
imgs += CSS["All Images"]["images"]
|
||||
|
||||
# copy Ancestor Tree graphics if needed???
|
||||
if self.graph:
|
||||
imgs += ["Web_Gender_Female.png",
|
||||
"Web_Gender_Male.png" ]
|
||||
imgs += CSS["Gender Images"]["images"]
|
||||
|
||||
# add system path to images:
|
||||
imgs = [os.path.join(const.IMAGE_DIR, fname) for fname in imgs]
|
||||
|
||||
# Mainz stylesheet graphics
|
||||
# will only be used if Mainz is slected as the stylesheet
|
||||
#if self.css == "Web_Mainz.css":
|
||||
imgs += CSS[self.css]["images"] #[ "Web_Mainz_Bkgd.png", "Web_Mainz_Header.png",
|
||||
#"Web_Mainz_Mid.png", "Web_Mainz_MidLight.png" ]
|
||||
# Anything css-specific:
|
||||
imgs += CSS[self.css]["images"]
|
||||
|
||||
# copy all to images subdir:
|
||||
for from_path in imgs:
|
||||
fdir, fname = os.path.split(from_path)
|
||||
self.copy_file(from_path, fname, "images")
|
||||
@ -6643,7 +6626,7 @@ class NavWebOptions(MenuReportOptions):
|
||||
"""
|
||||
|
||||
css_opts = self.__css.get_value()
|
||||
if CSS[css_opts]["navigation"]: # in ["Web_Basic-Blue.css", "Web_Visually.css"]:
|
||||
if CSS[css_opts]["navigation"]:
|
||||
self.__navigation.set_available(True)
|
||||
else:
|
||||
self.__navigation.set_available(False)
|
||||
|
@ -52,7 +52,7 @@ log = logging.getLogger(".WebPage")
|
||||
import gen.lib
|
||||
import const
|
||||
import constfunc
|
||||
from gen.plug.report import Report, CSS_FILES
|
||||
from gen.plug.report import Report
|
||||
from gen.plug.report import utils as ReportUtils
|
||||
from gui.plug.report import MenuReportOptions
|
||||
from gen.plug.menu import BooleanOption, NumberOption, StringOption, \
|
||||
@ -69,6 +69,7 @@ from gen.display.name import displayer as _nd
|
||||
import libholiday
|
||||
from libhtml import Html
|
||||
from libhtmlconst import _CHARACTER_SETS, _CC, _COPY_OPTIONS
|
||||
from gui.pluginmanager import GuiPluginManager
|
||||
|
||||
# import styled notes from
|
||||
# src/plugins/lib/libhtmlbackend.py
|
||||
@ -88,6 +89,9 @@ _WEB_EXT = ['.html', '.htm', '.shtml', '.php', '.php3', '.cgi']
|
||||
_CALENDARSCREEN = 'calendar-screen.css'
|
||||
_CALENDARPRINT = 'calendar-print.css'
|
||||
|
||||
PLUGMAN = GuiPluginManager.get_instance()
|
||||
CSS = PLUGMAN.process_plugin_data('WEBSTUFF')
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# WebCalReport
|
||||
@ -322,37 +326,34 @@ class WebCalReport(Report):
|
||||
"""
|
||||
# Copy the screen stylesheet
|
||||
if self.css:
|
||||
fname = os.path.join(const.DATA_DIR, self.css)
|
||||
fname = CSS[self.css]["filename"]
|
||||
self.copy_file(fname, _CALENDARSCREEN, "styles")
|
||||
|
||||
# copy Navigation Menu Layout if Blue or Visually is being used
|
||||
if self.css == "Web_Basic-Blue.css" or "Web_Visually.css":
|
||||
fname = os.path.join(const.DATA_DIR, "Web_Navigation-Horizontal.css")
|
||||
if CSS[self.css]["navigation"]:
|
||||
fname = CSS["Navigation-Horizontal"]["filename"]
|
||||
self.copy_file(fname, "Web_Navigation-Menus.css", "styles")
|
||||
|
||||
# copy print stylesheet
|
||||
fname = os.path.join(const.DATA_DIR, "Web_Print-Default.css")
|
||||
fname = CSS["Print-Default"]["filename"]
|
||||
self.copy_file(fname, _CALENDARPRINT, "styles")
|
||||
|
||||
# set imgs to empty
|
||||
imgs = []
|
||||
|
||||
if self.css == "Web_Mainz.css":
|
||||
|
||||
# Mainz stylesheet graphics
|
||||
# will only be used if Mainz is slected as the stylesheet
|
||||
imgs += ["Web_Mainz_Bkgd.png", "Web_Mainz_Header.png",
|
||||
"Web_Mainz_Mid.png", "Web_Mainz_MidLight.png"]
|
||||
# Mainz stylesheet graphics
|
||||
# will only be used if Mainz is slected as the stylesheet
|
||||
imgs += CSS[self.css]["images"]
|
||||
|
||||
# Copy GRAMPS favicon
|
||||
imgs += ['favicon.ico']
|
||||
imgs += CSS["All Images"]['images']
|
||||
|
||||
# copy copyright image
|
||||
if 0 < self.copy <= len(_CC):
|
||||
imgs += ['somerights20.gif']
|
||||
imgs += CSS["Copyright"]['filename']
|
||||
|
||||
for fname in imgs:
|
||||
from_path = os.path.join(const.IMAGE_DIR, fname)
|
||||
for from_path in imgs:
|
||||
fdir, fname = os.path.split(from_path)
|
||||
self.copy_file(from_path, fname, "images")
|
||||
|
||||
# ---------------------------------------------------------------------------------------
|
||||
@ -437,7 +438,7 @@ class WebCalReport(Report):
|
||||
links += Html("link",rel="stylesheet", href=fname,type="text/css", media="print", indent = False)
|
||||
|
||||
# add horizontal menu if css == Blue or Visually because there is no menus
|
||||
if self.css in ["Web_Basic-Blue.css", "Web_Visually.css"]:
|
||||
if CSS[self.css]["navigation"]:
|
||||
|
||||
# Link to Navigation Menus stylesheet
|
||||
fname = os.path.join(subdirs, "styles", "Web_Navigation-Menus.css")
|
||||
@ -847,7 +848,7 @@ class WebCalReport(Report):
|
||||
self.progress.set_pass(_('Formatting months ...'), 12)
|
||||
|
||||
for month in range(1, 13):
|
||||
|
||||
import pdb; pdb.set_trace()
|
||||
cal_fname = get_full_month_name(month)
|
||||
of = self.create_file(cal_fname, str(year))
|
||||
|
||||
@ -1247,8 +1248,9 @@ class WebCalReport(Report):
|
||||
"""
|
||||
|
||||
# writes the file out from the page variable; Html instance
|
||||
page.write(partial(print, file=of.write))
|
||||
|
||||
# This didn't work for some reason, but it does in NarWeb:
|
||||
#page.write(partial(print, file=of.write))
|
||||
page.write(lambda line: of.write(line + '\n'))
|
||||
# close the file now...
|
||||
self.close_file(of)
|
||||
|
||||
@ -1388,9 +1390,11 @@ class WebCalOptions(MenuReportOptions):
|
||||
cright.set_help( _("The copyright to be used for the web files"))
|
||||
menu.add_option(category_name, "cright", cright)
|
||||
|
||||
css = EnumeratedListOption(_('StyleSheet'), CSS_FILES[0][1])
|
||||
for style in CSS_FILES:
|
||||
css.add_item(style[1], style[0])
|
||||
css = EnumeratedListOption(_('StyleSheet'), CSS["default"]["id"])
|
||||
for (name, id) in sorted([(CSS[key]["translation"], CSS[key]["id"])
|
||||
for key in CSS.keys()]):
|
||||
if CSS[id]["user"]:
|
||||
css.add_item(CSS[id]["translation"], CSS[id]["id"])
|
||||
css.set_help( _('The stylesheet to be used for the web pages'))
|
||||
menu.add_option(category_name, "css", css)
|
||||
|
||||
|
47
src/plugins/webstuff/Makefile.am
Normal file
@ -0,0 +1,47 @@
|
||||
# This is the src/plugins/webstuff level Makefile for Gramps
|
||||
# We could use GNU make's ':=' syntax for nice wildcard use,
|
||||
# but that is not necessarily portable.
|
||||
# If not using GNU make, then list all .py files individually
|
||||
|
||||
DATAFILES = \
|
||||
css/behaviour.css \
|
||||
css/Web_Basic-Spruce.css \
|
||||
css/Web_Mainz.css \
|
||||
css/Web_Basic-Ash.css \
|
||||
css/Web_Navigation-Horizontal.css \
|
||||
css/Web_Basic-Blue.css \
|
||||
css/Web_Navigation-Vertical.css \
|
||||
css/Web_Basic-Cypress.css \
|
||||
css/Web_Nebraska.css \
|
||||
css/Web_Basic-Lilac.css \
|
||||
css/Web_Print-Default.css \
|
||||
css/Web_Basic-Peach.css \
|
||||
css/Web_Visually.css \
|
||||
images/blank.gif \
|
||||
images/document.png \
|
||||
images/favicon2.ico \
|
||||
images/favicon.ico \
|
||||
images/Web_Gender_Female.png \
|
||||
images/Web_Gender_Male.png \
|
||||
images/Web_Mainz_Bkgd.png \
|
||||
images/Web_Mainz_Header.png \
|
||||
images/Web_Mainz_MidLight.png \
|
||||
images/Web_Mainz_Mid.png
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@/plugins/webstuff
|
||||
|
||||
pkgdata_PYTHON = \
|
||||
webstuff.py \
|
||||
webstuff.gpr.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/plugins/webstuff
|
||||
pkgpythondir = @pkgpythondir@/plugins/webstuff
|
||||
|
||||
# Clean up all the byte-compiled files
|
||||
MOSTLYCLEANFILES = *pyc *pyo
|
||||
|
||||
GRAMPS_PY_MODPATH = "../../"
|
||||
|
||||
pycheck:
|
||||
(export PYTHONPATH=$(GRAMPS_PY_MODPATH); \
|
||||
pychecker $(pkgdata_PYTHON));
|
1464
src/plugins/webstuff/css/Web_Basic-Ash.css
Normal file
1608
src/plugins/webstuff/css/Web_Basic-Blue.css
Normal file
1466
src/plugins/webstuff/css/Web_Basic-Cypress.css
Normal file
1483
src/plugins/webstuff/css/Web_Basic-Lilac.css
Normal file
1489
src/plugins/webstuff/css/Web_Basic-Peach.css
Normal file
1485
src/plugins/webstuff/css/Web_Basic-Spruce.css
Normal file
1493
src/plugins/webstuff/css/Web_Mainz.css
Normal file
102
src/plugins/webstuff/css/Web_Navigation-Horizontal.css
Normal file
@ -0,0 +1,102 @@
|
||||
/*
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Web_Navigation-Horizontal Stylesheet
|
||||
***************************************************************************************************
|
||||
|
||||
# $Id: Web_Navigation-Horizontal.css 15207 2010-04-17 16:50:00Z robhealey1 $
|
||||
|
||||
Body Element
|
||||
----------------------------------------------------- */
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0px 4px 0px 4px;
|
||||
width: 1060px;
|
||||
}
|
||||
|
||||
/* lphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphabet {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
div#alphabet ul {
|
||||
list-style: none;
|
||||
min-width: 770px;
|
||||
height: 24px;
|
||||
margin: 0;
|
||||
padding: 0px 0px 0px 16px;
|
||||
border-width: 2px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#alphabet ul li {
|
||||
border-width: 0px 2px 0px 2px;
|
||||
border-style: solid;
|
||||
margin: 0;
|
||||
float: left;
|
||||
}
|
||||
div#alphabet ul li:first-child {
|
||||
border-left: none;
|
||||
}
|
||||
div#alphabet ul li a {
|
||||
font: normal 16px sans;
|
||||
display: block;
|
||||
padding: 4px 8px 4px 8px;
|
||||
float: left;
|
||||
margin: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Navigation/ Subnavigation
|
||||
----------------------------------------------------- */
|
||||
div#navigation, div#subnavigation {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
div#navigation ul, div#subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: 900px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0px 0px 0px 10px;
|
||||
border-width: 2px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#navigation ul li, div#subnavigation ul li {
|
||||
border-width: 0px 2px 0px 2px;
|
||||
border-style: solid;
|
||||
float: left;
|
||||
margin: 0;
|
||||
}
|
||||
div#navigation ul li:first-child, div#subnavigation ul li:first-child {
|
||||
border-left: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
div#navigation ul li a, div#subnavigation ul li a {
|
||||
display: block;
|
||||
padding: 8px 6px 6px 6px;
|
||||
font: normal 12px serif;
|
||||
text-decoration: none;
|
||||
}
|
148
src/plugins/webstuff/css/Web_Navigation-Vertical.css
Normal file
@ -0,0 +1,148 @@
|
||||
/*
|
||||
# encoding: utf-8
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2008-2010 Rob G. Healey <robhealey1@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Web_Navigation-Vertical.css Stylesheet
|
||||
***************************************************************************************************
|
||||
|
||||
# $Id: Web_Navigation-Vertical.css 15241 2010-04-19 11:07:00Z robhealey1 $
|
||||
|
||||
Header
|
||||
----------------------------------------------------- */
|
||||
#header {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
overflow: auto;
|
||||
width: 100%;
|
||||
height: 65px;
|
||||
}
|
||||
|
||||
/* Body Element
|
||||
----------------------------------------------------- */
|
||||
body {
|
||||
color: #000;
|
||||
background-color: #FFF;
|
||||
padding: 60px 0px 0px 136px;
|
||||
}
|
||||
|
||||
/* Alphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphabet {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: solid 2px #000;
|
||||
}
|
||||
div#alphabet ul {
|
||||
list-style:none;
|
||||
min-width: 900px;
|
||||
height: 24px;
|
||||
margin:0;
|
||||
padding: 0px 0px 0px 9px;
|
||||
border-bottom: solid 2px #000;
|
||||
}
|
||||
div#alphabet ul li {
|
||||
float: left;
|
||||
}
|
||||
div#alphabet ul li:first-child {
|
||||
margin-left: 10px;
|
||||
}
|
||||
div#alphabet ul li:after {
|
||||
content: "| ";
|
||||
}
|
||||
div#alphabet ul li a {
|
||||
display: block;
|
||||
padding: 4px 8px 4px 8px;
|
||||
float: left;
|
||||
font: .8em bold italic small-caps verdana, serif;
|
||||
color: #000;
|
||||
text-decoration:none;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
div#navigation {
|
||||
position: fixed;
|
||||
left: 0px;
|
||||
top: 55px;
|
||||
}
|
||||
div#navigation ul {
|
||||
width: 132px;
|
||||
height: 424px;
|
||||
list-style: none;
|
||||
padding: 0px 0px 0px 8px;
|
||||
border: solid 4px #000;
|
||||
}
|
||||
div#navigation ul li {
|
||||
display: inline;
|
||||
font: bold 14px/100% sans;
|
||||
float: left;
|
||||
border-width: 0px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#navigation ul li:first-child {
|
||||
border-top: none;
|
||||
padding-top: 20px;
|
||||
}
|
||||
div#navigation ul li a {
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
/* SubNavigation
|
||||
----------------------------------------------------- */
|
||||
div#subnavigation {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: solid 2px #000;
|
||||
}
|
||||
div#subnavigation ul {
|
||||
list-style:none;
|
||||
min-width: 900px;
|
||||
height: 40px;
|
||||
margin:0;
|
||||
padding: 0px 0px 0px 16px;
|
||||
border-bottom: solid 2px #5D835F;
|
||||
}
|
||||
div#subnavigation ul li {
|
||||
float:left;
|
||||
}
|
||||
div#subnavigation ul li:after {
|
||||
content: "| ";
|
||||
}
|
||||
div#subnavigation ul li a {
|
||||
display: block;
|
||||
padding: 12px 16px 14px 1px;
|
||||
float:left;
|
||||
font: .8em bold italic small-caps verdana, serif;
|
||||
color: #000;
|
||||
text-decoration:none;
|
||||
margin:0;
|
||||
}
|
||||
div#subnavigation ul li a:hover {
|
||||
background-color: #C1B398;
|
||||
}
|
1520
src/plugins/webstuff/css/Web_Nebraska.css
Normal file
700
src/plugins/webstuff/css/Web_Print-Default.css
Normal file
@ -0,0 +1,700 @@
|
||||
/*
|
||||
**************************************************************************************************
|
||||
Copyright Holder and License
|
||||
**************************************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Print Style Sheet
|
||||
Style Author: Jason M. Simanek (2008)
|
||||
Modified by Rob G. Healey, July 2008-2010
|
||||
|
||||
**************************************************************************************************
|
||||
This website was created with GRAMPS <http://www.gramps-project.org/>
|
||||
--------------------------------------------------------------------------------------------------
|
||||
GRAMPS is a Free Software Project for Genealogy, offering a professional
|
||||
genealogy program, and a wiki open to all. It is a community project, created,
|
||||
developed and governed by genealogists.
|
||||
|
||||
'Go to <http://gramps-project.org/> to learn more!
|
||||
|
||||
--------------------------------------------------------------------------------------------------
|
||||
(C) Copyright 2008-2010 Rob G. Healey
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
GRAMPS is free software: you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation, version 2 of the License.
|
||||
|
||||
GRAMPS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
GRAMPS. If not, see <http://www.gnu.org/licenses/>.
|
||||
--------------------------------------------------------------------------------------------------
|
||||
|
||||
Color Palette
|
||||
--------------------------------------------------------------------------------------------------
|
||||
gray #A7A7A7
|
||||
red #520
|
||||
black #000
|
||||
white #FFF
|
||||
---------------------------------------------------------------------------------------------------
|
||||
|
||||
# $Id: Web_Print-Default.css 15639 2010-07-16 03:17:08Z robhealey1 $
|
||||
|
||||
NarrativeWeb Styles
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
General Elements
|
||||
----------------------------------------------------- */
|
||||
|
||||
body {
|
||||
color:#000;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
div {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
img {
|
||||
border:none;
|
||||
margin:0;
|
||||
}
|
||||
.content { }
|
||||
.content div.snapshot {
|
||||
float:right;
|
||||
margin:1.6em;
|
||||
padding-top: .5cm;
|
||||
background:none;
|
||||
}
|
||||
.content div.snapshot div.thumbnail {
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
.content .thumbnail a:link:after, .content .thumbnail a:visited:after {
|
||||
content:"";
|
||||
}
|
||||
.fullclear {
|
||||
width:100%;
|
||||
height:1pt;
|
||||
margin:0;
|
||||
padding:0;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
h1 {
|
||||
font:normal 16pt/18pt serif;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
h2 {
|
||||
font:normal 18pt/23pt serif;
|
||||
display:inline;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
h3 {
|
||||
font:normal 18pt/23pt serif;
|
||||
text-align:left;
|
||||
display:inline;
|
||||
margin:0 0 0 8pt;
|
||||
padding:0;
|
||||
}
|
||||
h4 {
|
||||
display: block;
|
||||
clear: both;
|
||||
font: normal 14pt/16pt serif;
|
||||
margin: 8pt 0 0 0;
|
||||
padding: 8pt 0 1pt 0;
|
||||
border-top: solid .5pt #A7A7A7;
|
||||
}
|
||||
h5, h6 {
|
||||
font:normal 14pt/16pt serif;
|
||||
font-style:italic;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
p {
|
||||
font:normal 11pt/14pt serif;
|
||||
}
|
||||
p#description {
|
||||
margin:0 0 14pt 0;
|
||||
}
|
||||
a:link, a:visited {
|
||||
color:#520;
|
||||
text-decoration:underline;
|
||||
}
|
||||
.content a:link:after, content a:visited:after {
|
||||
font-size:70%;
|
||||
font-family:sans-serif;
|
||||
content:" (" attr(href) ") ";
|
||||
}
|
||||
.content ol li a:link {
|
||||
text-decoration:none;
|
||||
}
|
||||
.content ol li a:link:after, .content ol li a:visited:after {
|
||||
content:"";
|
||||
}
|
||||
sup {
|
||||
line-height:0;
|
||||
}
|
||||
ol {
|
||||
font:normal .9em/1.6em sans-serif;
|
||||
margin-top:0;
|
||||
margin-bottom:0;
|
||||
padding-top:.5em;
|
||||
padding-bottom:0;
|
||||
}
|
||||
|
||||
/* Header
|
||||
----------------------------------------------------- */
|
||||
#Header {
|
||||
padding: 0 0 8pt 0;
|
||||
margin: 0 0 8pt 0;
|
||||
border-bottom: solid .5pt #000;
|
||||
}
|
||||
#SiteTitle {
|
||||
text-align: left;
|
||||
margin-left: 20px;
|
||||
padding: 0;
|
||||
}
|
||||
#user_header {
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
.grampsid {
|
||||
font-size: 60%;
|
||||
font-family: monospace;
|
||||
color: #A7A7A7
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
#alphabet, #navigation, #subnavigation { display:none; }
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
width:100%;
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
border-bottom:solid .5pt #FFF;
|
||||
}
|
||||
table thead tr th {
|
||||
text-align:left;
|
||||
font:normal 11pt/13pt serif;
|
||||
color:#000;
|
||||
margin:0;
|
||||
padding:0;
|
||||
padding-bottom:1pt;
|
||||
border-bottom:solid .5pt #000;
|
||||
}
|
||||
.content table thead tr th a {
|
||||
text-decoration:none;
|
||||
}
|
||||
.content table thead tr th a:link:after, .content table thead tr th a:visited:after {
|
||||
content:"";
|
||||
}
|
||||
table tbody tr td {
|
||||
font:normal 9pt/11pt sans-serif;
|
||||
vertical-align:middle;
|
||||
padding:2pt 6pt 1pt 0;
|
||||
border-bottom:dashed .5pt #A7A7A7;
|
||||
}
|
||||
.content table tbody tr td a {
|
||||
text-decoration:none;
|
||||
}
|
||||
.content table tbody tr td a:link:after, .content table tbody tr td a:visited:after {
|
||||
content:"";
|
||||
}
|
||||
table tr.BeginLetter td, table.infolist tr.BeginSurname td {
|
||||
border-top:solid .5pt #A7A7A7;
|
||||
}
|
||||
table tbody tr td.ColumnRowLabel {
|
||||
width: 3%;
|
||||
color: #A7A7A7;
|
||||
text-align: center;
|
||||
}
|
||||
table tr td.ColumnLetter {
|
||||
width: 6%;
|
||||
text-align: center;
|
||||
}
|
||||
table tr td.ColumnAttribute {
|
||||
width: 10%;
|
||||
}
|
||||
.content table tbody tr td.ColumnName a {
|
||||
text-decoration: none;
|
||||
}
|
||||
table tbody tr td.ColumnBirth {
|
||||
width: 10%;
|
||||
}
|
||||
table tbody tr td.ColumnDeath {
|
||||
width: 10%;
|
||||
text-decoration: underline;
|
||||
}
|
||||
table tbody tr td.ColumnParents {
|
||||
font-size: 70%;
|
||||
}
|
||||
table tbody tr td.ColumnParents span.mother:before {
|
||||
content: "+ ";
|
||||
}
|
||||
|
||||
/* Home/Welcome
|
||||
----------------------------------------------------- */
|
||||
#Home p {
|
||||
margin:0 0 9pt 0;
|
||||
}
|
||||
#Home img {
|
||||
float:right;
|
||||
margin:0;
|
||||
padding:0 0 9pt 9pt;
|
||||
}
|
||||
|
||||
/* Introduction
|
||||
----------------------------------------------------- */
|
||||
#Introduction p {
|
||||
margin:0 0 9pt 0;
|
||||
}
|
||||
#Introduction img {
|
||||
float:right;
|
||||
margin:0;
|
||||
padding:0 0 9pt 9pt;
|
||||
}
|
||||
|
||||
/* Surnames
|
||||
----------------------------------------------------- */
|
||||
#Surnames { }
|
||||
table.surnamelist tr thead th.ColumnSurname, #Surnames table.surnamelist tbody tr td.ColumnSurname {
|
||||
width:50%;
|
||||
}
|
||||
table#SortByName thead tr th.ColumnSurname a:after, table#SortByCount thead tr th.ColumnQuantity a:after {
|
||||
content:" ↓";
|
||||
}
|
||||
table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents {
|
||||
width:35%;
|
||||
}
|
||||
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
|
||||
/* PlaceDetail
|
||||
------------------------------------------------------ */
|
||||
div#PlaceDetail h5 {
|
||||
text-align: center;
|
||||
float: center;
|
||||
font: normal 1.4em sans;
|
||||
border-bottom: double 4px #000;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryDetail h2 {
|
||||
display:none;
|
||||
}
|
||||
#GalleryNav {
|
||||
display:none;
|
||||
}
|
||||
#GalleryDisplay {
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
position:relative;
|
||||
overflow:hidden;
|
||||
text-align:center;
|
||||
}
|
||||
#GalleryDisplay img {
|
||||
margin:0 auto;
|
||||
border:solid 1pt #542;
|
||||
}
|
||||
#GalleryDetail h3 {
|
||||
display:block;
|
||||
text-align:center;
|
||||
margin:2pt 0 8pt 0;
|
||||
}
|
||||
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
#Download p {
|
||||
margin:0 0 9pt 0;
|
||||
}
|
||||
#Download img {
|
||||
float:right;
|
||||
margin:0;
|
||||
padding:0 0 9pt 9pt;
|
||||
}
|
||||
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
#researcher {
|
||||
margin:16pt 0 0 0;
|
||||
}
|
||||
#Contact img {
|
||||
float:right;
|
||||
margin:0;
|
||||
padding:0 0 9pt 9pt;
|
||||
}
|
||||
#researcher h3 {
|
||||
margin:0;
|
||||
}
|
||||
#researcher span {
|
||||
font:normal .9em/1.4em serif;
|
||||
display:block;
|
||||
float:left;
|
||||
margin-right:.4em;
|
||||
}
|
||||
#city {
|
||||
clear:left;
|
||||
}
|
||||
#city:after {
|
||||
content:",";
|
||||
}
|
||||
#email {
|
||||
clear:left;
|
||||
}
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Download, #Contact {
|
||||
padding:3em 20px;
|
||||
}
|
||||
|
||||
/* Subsections : Events
|
||||
----------------------------------------------------- */
|
||||
#IndividualDetail .ColumnValue {
|
||||
padding:4pt 0;
|
||||
}
|
||||
.ColumnValue p {
|
||||
font:normal 9pt/11pt sans-serif;
|
||||
margin:1pt 0 0 18pt;
|
||||
}
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
#indivgallery h4 {
|
||||
margin-bottom:1em;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
margin:0;
|
||||
float:left;
|
||||
width:130px;
|
||||
height:150px;
|
||||
text-align:center;
|
||||
}
|
||||
#indivgallery .thumbnail a {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#indivgallery .thumbnail a img {
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:solid .5pt #000;
|
||||
}
|
||||
#indivgallery div.thumbnail p {
|
||||
font:normal 7pt/9pt sans-serif;
|
||||
text-align:center;
|
||||
width:80%;
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* Subsections : Pedigree
|
||||
----------------------------------------------------- */
|
||||
#pedigree a {
|
||||
text-decoration:none;
|
||||
}
|
||||
.content #pedigree a:link:after, .content #pedigree a:visited:after {
|
||||
content:"";
|
||||
}
|
||||
.pedigreegen {
|
||||
font:normal 10pt/12pt sans-serif;
|
||||
list-style:none;
|
||||
margin:8pt 0 0 0;
|
||||
padding:0 0 0 20px;
|
||||
}
|
||||
.pedigreegen li ol {
|
||||
list-style:none;
|
||||
margin-left:16pt;
|
||||
}
|
||||
.pedigreegen li ol li ol {
|
||||
font:normal 9pt/11pt sans-serif;
|
||||
list-style:decimal;
|
||||
margin-left:16pt;
|
||||
}
|
||||
.pedigreegen li ol li ol li ol.spouselist {
|
||||
list-style:none;
|
||||
margin-left:0;
|
||||
}
|
||||
.spouselist li.spouse ol {
|
||||
list-style:decimal;
|
||||
margin-left:16pt;
|
||||
}
|
||||
.spouse a {
|
||||
font-weight:normal;
|
||||
font-style:normal;
|
||||
}
|
||||
.spouse:before {
|
||||
content: "+ ";
|
||||
}
|
||||
.thisperson {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
#treeContainer {
|
||||
position:relative;
|
||||
z-index:1;
|
||||
}
|
||||
#treeContainer div.boxbg a:link:after, #treeContainer div.boxbg a:visited:after {
|
||||
font-size:70%;
|
||||
font-family:sans-serif;
|
||||
content:"";
|
||||
}
|
||||
.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
margin:0 auto;
|
||||
}
|
||||
.boxbg a {
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .7em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
width:50pt;
|
||||
padding:5pt 8pt;
|
||||
margin:5pt 0 0 0;
|
||||
background-color:#FFF;
|
||||
border:solid 1pt #000;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
.shadow {
|
||||
display:none;
|
||||
}
|
||||
#tree div div.bvline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
height:1pt;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
border-bottom:solid .5pt #A7A7A7
|
||||
}
|
||||
#tree div div.bhline {
|
||||
position:absolute;
|
||||
z-index:2;
|
||||
width:1pt;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
border-right:solid .5pt #A7A7A7
|
||||
}
|
||||
.ghline, .gvline {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
#footer {
|
||||
width:100%;
|
||||
margin:0;
|
||||
padding:.1in 0 0 0;
|
||||
clear:both;
|
||||
border-top:solid .5pt #000;
|
||||
}
|
||||
#user_footer {
|
||||
float:left;
|
||||
width:70%;
|
||||
}
|
||||
#user_footer p {
|
||||
font-style:italic;
|
||||
}
|
||||
p#createdate {
|
||||
float: left;
|
||||
width: 3.9in;
|
||||
font: normal 9pt/10pt sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
#copyright {
|
||||
float: right;
|
||||
width: 4in;
|
||||
margin: 0;
|
||||
font: normal 9pt/10pt sans-serif;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
-------------------------------------------------------------------------------------------- */
|
||||
/* Calendar : General */
|
||||
body#WebCal h1#SiteTitle {
|
||||
float:left;
|
||||
font-size:14pt;
|
||||
line-height:16pt;
|
||||
padding-bottom:.1in;
|
||||
}
|
||||
.calendar {
|
||||
clear:both;
|
||||
empty-cells:show;
|
||||
width:100%;
|
||||
font-size:14pt;
|
||||
font-weight:normal;
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:none;
|
||||
border-collapse:collapse;
|
||||
}
|
||||
.calendar thead, .calendar tbody {
|
||||
border-style:solid;
|
||||
border-width:2pt 2pt 2pt 2pt;
|
||||
border-color:#000;
|
||||
}
|
||||
.calendar tbody {
|
||||
border-top:none;
|
||||
}
|
||||
.calendar thead tr th {
|
||||
width:12%;
|
||||
font-family:sans-serif;
|
||||
font-size:10pt;
|
||||
font-weight:bold;
|
||||
text-align:center;
|
||||
text-transform:uppercase;
|
||||
padding:.2em 0 .1em 0;
|
||||
}
|
||||
.calendar thead tr th.monthName {
|
||||
width:100%;
|
||||
font-size:20pt;
|
||||
line-height:100%;
|
||||
text-transform:none;
|
||||
padding:5pt;
|
||||
border-width:0;
|
||||
}
|
||||
#CreatorInfo {
|
||||
float:right;
|
||||
margin:0 10px 0 0;
|
||||
}
|
||||
body#WebCal a {
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
}
|
||||
.calendar tfoot {
|
||||
border:none;
|
||||
}
|
||||
.calendar tfoot tr td {
|
||||
font-size:12pt;
|
||||
font-style:italic;
|
||||
padding:.7em 5% 1em 5%;
|
||||
}
|
||||
|
||||
/* Calendar : Date Numeral */
|
||||
.calendar td div.date {
|
||||
float:right;
|
||||
display:block;
|
||||
font-size:16pt;
|
||||
line-height:100%;
|
||||
font-weight:bold;
|
||||
text-align:center;
|
||||
color:#000;
|
||||
margin:0 0 0 .5em;
|
||||
padding:7pt;
|
||||
}
|
||||
.calendar td.highlight div.date {
|
||||
color:#F00;
|
||||
}
|
||||
|
||||
/* Calendar : Date Container */
|
||||
.calendar tbody tr td {
|
||||
vertical-align:top;
|
||||
height:4em;
|
||||
padding:0;
|
||||
border-width:1px 0 0 1px;
|
||||
border-style:solid;
|
||||
border-color:#999;
|
||||
}
|
||||
.calendar tbody tr td:first-child {
|
||||
border-left:none;
|
||||
}
|
||||
.calendar tbody tr:first-child td {
|
||||
border-top:none;
|
||||
}
|
||||
|
||||
/* Calendar : Date Detail */
|
||||
.calendar tbody tr td ul {
|
||||
list-style:none;
|
||||
font-family:sans-serif;
|
||||
font-size:8pt;
|
||||
margin:30pt 0 5pt 0;
|
||||
padding:0;
|
||||
}
|
||||
.calendar tbody tr td ul li {
|
||||
display:block;
|
||||
width:92%;
|
||||
margin:0 4%;
|
||||
padding:.2em 0 .3em 0;
|
||||
border-top:dashed .5pt #999;
|
||||
}
|
||||
.calendar tbody tr td ul li:first-child {
|
||||
border:none;
|
||||
}
|
||||
.calendar tbody tr td ul li em {
|
||||
font-style:normal;
|
||||
color:#000;
|
||||
}
|
||||
.calendar tbody tr td ul li span.yearsmarried em {
|
||||
color:#000;
|
||||
}
|
||||
|
||||
/* Calendar : Previous-Next Month */
|
||||
.calendar tbody tr td.previous,
|
||||
.calendar tbody tr td.next,
|
||||
.calendar tbody tr td.previous div.date,
|
||||
.calendar tbody tr td.next div.date {
|
||||
font-weight:normal;
|
||||
font-size:12pt;
|
||||
color:#999;
|
||||
}
|
||||
/* Calendar : Full Year */
|
||||
body#fullyearlinked div.content {
|
||||
width:963px;
|
||||
margin:0 auto;
|
||||
padding:15px 0 2px 2px;
|
||||
}
|
||||
body#fullyearlinked table.calendar {
|
||||
float:left;
|
||||
width:320px;
|
||||
height:18em;
|
||||
border:solid 1px #000;
|
||||
}
|
||||
body#fullyearlinked table.calendar thead tr th {
|
||||
height:2em;
|
||||
}
|
||||
body#fullyearlinked table.calendar thead tr th.monthName {
|
||||
font-size:1.2em;
|
||||
padding:2px 0;
|
||||
}
|
||||
body#fullyearlinked table.calendar tbody tr td {
|
||||
height:3em;
|
||||
}
|
1645
src/plugins/webstuff/css/Web_Visually.css
Normal file
87
src/plugins/webstuff/css/behaviour.css
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright 2009 Stephane Charette and Jason Simanek
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
**************************************************************************************************
|
||||
GRAMPS cascading style sheet for common behaviour independant of styles
|
||||
Style Name: n/a (used by many different styles)
|
||||
Style Author: Stephane Charette and Jason Simanek
|
||||
**************************************************************************************************
|
||||
|
||||
-------------
|
||||
Image Gallery
|
||||
-------------
|
||||
|
||||
# $Id: behaviour.css 13749 2009-12-10 06:50:21Z robhealey1 $
|
||||
|
||||
ensure RegionBox <ol> is hidden and has no margins/padding that would shift the image */
|
||||
ol.RegionBox {
|
||||
display:none;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
/* show the RegionBox <ol> When the mouse hovers over the gallery */
|
||||
div#GalleryDisplay:hover ol.RegionBox {
|
||||
display:block;
|
||||
}
|
||||
|
||||
/* define how <li> tags should normally look within RegionBox */
|
||||
ol.RegionBox li {
|
||||
margin:0;
|
||||
padding:0;
|
||||
display:block;
|
||||
position:absolute;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
border:dashed 1px #999;
|
||||
background:url(../images/blank.gif) repeat;
|
||||
/* IE doesn't work correctly with "hover" if the <li> tag is empty,
|
||||
* so fill the <li> with a blank image; this way the mouse will be
|
||||
* considered in the <li> tag anywhere over the background image
|
||||
*/
|
||||
}
|
||||
|
||||
/* use a solid border when the mouse hovers over the <li> tags */
|
||||
ol.RegionBox li:hover {
|
||||
z-index:100;
|
||||
border:solid 1px #FFF;
|
||||
}
|
||||
|
||||
/* links are kept hidden... */
|
||||
ol.RegionBox li a {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* ...until we hover over them */
|
||||
ol.RegionBox li:hover a {
|
||||
display:block;
|
||||
text-decoration:none;
|
||||
border-bottom:solid 1px #FFF;
|
||||
background-color:#888;
|
||||
color:#FFF;
|
||||
}
|
||||
|
||||
/* underline is hidden until we hover over the links */
|
||||
ol.RegionBox li:hover a:hover {
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
BIN
src/plugins/webstuff/images/Web_Gender_Female.png
Normal file
After Width: | Height: | Size: 457 B |
BIN
src/plugins/webstuff/images/Web_Gender_Male.png
Normal file
After Width: | Height: | Size: 454 B |
BIN
src/plugins/webstuff/images/Web_Mainz_Bkgd.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/plugins/webstuff/images/Web_Mainz_Header.png
Normal file
After Width: | Height: | Size: 334 KiB |
BIN
src/plugins/webstuff/images/Web_Mainz_Mid.png
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
src/plugins/webstuff/images/Web_Mainz_MidLight.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
src/plugins/webstuff/images/blank.gif
Normal file
After Width: | Height: | Size: 43 B |
BIN
src/plugins/webstuff/images/document.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/plugins/webstuff/images/favicon.ico
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/plugins/webstuff/images/favicon2.ico
Normal file
After Width: | Height: | Size: 1.4 KiB |
39
src/plugins/webstuff/webstuff.gpr.py
Normal file
@ -0,0 +1,39 @@
|
||||
# encoding:utf-8
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2010 Doug Blank <doug.blank@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# $Id $
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Stylesheets
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
register(GENERAL,
|
||||
id = 'system webstuff',
|
||||
category = "WEBSTUFF",
|
||||
name = _("Webstuff"),
|
||||
description = _("Provides a collection of resources for the web"),
|
||||
version = '1.0',
|
||||
gramps_target_version = '3.3',
|
||||
fname = "webstuff.py",
|
||||
load_on_reg = True,
|
||||
process = "process_list",
|
||||
)
|
118
src/plugins/webstuff/webstuff.py
Normal file
@ -0,0 +1,118 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2010 Douglas Blank <doug.blank@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# $Id: $
|
||||
|
||||
import os
|
||||
import const
|
||||
from gen.ggettext import sgettext as _
|
||||
|
||||
def make_css_dict(tup):
|
||||
"""
|
||||
Basically, make a named tuple.
|
||||
"""
|
||||
return {
|
||||
"id": tup[0],
|
||||
"user": tup[1],
|
||||
"translation": tup[2],
|
||||
"filename": tup[3],
|
||||
"navigation": tup[4],
|
||||
"images": tup[5],
|
||||
}
|
||||
|
||||
def load_on_reg(dbstate, uistate, plugin):
|
||||
"""
|
||||
Runs when plugin is registered.
|
||||
"""
|
||||
dir, fname = os.path.split(__file__)
|
||||
CSS_FILES = [
|
||||
# id, user selectable?, translated_name, fullpath, navigation target name, additional files
|
||||
# "default" is used as default
|
||||
["Basic-Ash", 1, _("Basic-Ash"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Ash.css'), None, []],
|
||||
["Basic-Blue", 1, _("Basic-Blue"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Blue.css'), "Web_Navigation-Menus.css", []],
|
||||
["Basic-Cypress", 1, _("Basic-Cypress"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Cypress.css'), None, []],
|
||||
["Basic-Lilac", 1, _("Basic-Lilac"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Lilac.css'), None, []],
|
||||
["Basic-Peach", 1, _("Basic-Peach"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Peach.css'), None, []],
|
||||
["Basic-Spruce", 1, _("Basic-Spruce"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Spruce.css'), None, []],
|
||||
["Mainz", 1, _("Mainz"),
|
||||
os.path.join(dir, "css", 'Web_Mainz.css'), None,
|
||||
[os.path.join(dir, "images", "Web_Mainz_Bkgd.png"),
|
||||
os.path.join(dir, "images", "Web_Mainz_Header.png"),
|
||||
os.path.join(dir, "images", "Web_Mainz_Mid.png"),
|
||||
os.path.join(dir, "images", "Web_Mainz_MidLight.png")]],
|
||||
["Nebraska", 1, _("Nebraska"),
|
||||
os.path.join(dir, "css", 'Web_Nebraska.css'), None, []],
|
||||
["Visually Impaired", 1, _("Visually Impaired"),
|
||||
os.path.join(dir, "css", 'Web_Visually.css'), "Web_Navigation-Menus.css", []],
|
||||
["No style sheet",1, _("No style sheet"), '', None, []],
|
||||
["behaviour", 0, "Behaviour",
|
||||
os.path.join(dir, "css", 'behaviour.css'), None, []],
|
||||
["default", 0, _("Basic-Ash"),
|
||||
os.path.join(dir, "css", 'Web_Basic-Ash.css'), None, []],
|
||||
["Print-Default", 0, "Print-Default",
|
||||
os.path.join(dir, "css", 'Web_Print-Default.css'), None, []],
|
||||
["Navigation-Vertical", 0, "Navigation-Vertical",
|
||||
os.path.join(dir, "css", 'Web_Navigation-Vertical.css'), None, []],
|
||||
["Navigation-Horizontal", 0, "Navigation-Horizontal",
|
||||
os.path.join(dir, "css", 'Web_Navigation-Horizontal.css'), None, []],
|
||||
['Gender Images', 0, 'Gender Images', None, None,
|
||||
[os.path.join(dir, "images", "Web_Gender_Female.png"),
|
||||
os.path.join(dir, "images", "Web_Gender_Male.png"),
|
||||
]],
|
||||
['All Images', 0, 'All Images', None, None,
|
||||
[os.path.join(dir, "images", "favicon2.ico"),
|
||||
os.path.join(dir, "images", "blank.gif"),
|
||||
os.path.join(dir, "images", "document.png")]],
|
||||
['Copyright', 0, 'Copyright', os.path.join(dir, "images", "somerights20.gif"), None, []],
|
||||
['Document', 0, 'Document', os.path.join(dir, "images", "document.png"), None, []],
|
||||
]
|
||||
return CSS_FILES
|
||||
|
||||
def process_list(data):
|
||||
"""
|
||||
Gather all of the web resources together, and allow override files
|
||||
if available.
|
||||
"""
|
||||
retval = []
|
||||
for row in data:
|
||||
file = row[3]
|
||||
if file:
|
||||
path, filename = os.path.split(file)
|
||||
# is there a override file in the VERSION_DIR/webstuff?
|
||||
# eg, ~/.gramps/gramps33/webstuff/Web_Nebraska.css
|
||||
# if so, replace this one:
|
||||
override = os.path.join(const.VERSION_DIR, "webstuff", filename)
|
||||
if os.path.exists(override):
|
||||
row[3] = override
|
||||
retval.append(row)
|
||||
# {"Mainz": {"id": "Mainz", "user":1, ...}}
|
||||
retdict = {}
|
||||
for css in retval:
|
||||
if css[0] in retdict:
|
||||
retdict[css[0]]["images"].append(css[5])
|
||||
else:
|
||||
retdict[css[0]] = make_css_dict(css)
|
||||
return retdict
|