Source code for sagenb.notebook.css
# -*- coding: utf-8 -*
"""nodoctest
Notebook Stylesheets (CSS)
"""
#############################################################################
# Copyright (C) 2007 William Stein <wstein@gmail.com>
# Distributed under the terms of the GNU General Public License (GPL)
# The full text of the GPL is available at:
# http://www.gnu.org/licenses/
#############################################################################
import os
from sagenb.misc.misc import DOT_SAGENB
from sagenb.notebook.template import template
from hashlib import sha1
_css_cache = None
[docs]def css(color='default'):
r"""
Return the CSS header used by the Sage Notebook.
INPUT:
- ``color`` - string or pair of html colors, e.g.,
'gmail' 'grey' ``('#ff0000', '#0000ff')``
EXAMPLES::
sage: import sagenb.notebook.css as c
sage: type(c.css()[0])
<type 'str'>
"""
# TODO: the color argument does nothing right now, since
# the main.css file does not use it at all
global _css_cache
if _css_cache is None:
# TODO: Implement a theming system, with a register.
if color in ('default', 'grey', 'gmail', None):
color1 = None
color2 = None
elif isinstance(color, (tuple,list)):
color1, color2 = color
else:
raise ValueError("unknown color scheme %s" % color)
main_css = template(os.path.join('css', 'main.css'),
color1 = color1, color2 = color2,
color_theme = color)
user_css_path = os.path.join(DOT_SAGENB, 'notebook.css')
user_css = ''
if os.path.exists(user_css_path):
user_css = '\n' + open(user_css_path).read()
data = main_css + user_css
_css_cache = (data, sha1(data).hexdigest())
return _css_cache