From c1cbdfaf687437baba73fbbe5551907b6913f0a4 Mon Sep 17 00:00:00 2001 From: Trevor Bramwell Date: Fri, 2 Feb 2018 12:16:52 -0800 Subject: OPNFV Sphinx Theme This is a standalone theme for OPNFV docs based on the Sphinx Bootstrap Theme used in opnfvdocs. Change-Id: Ie145c0dc9c1e4c1ed0d8d72d687524b4ef5883de Signed-off-by: Trevor Bramwell --- opnfv-theme/.gitignore | 5 +++ opnfv-theme/MANIFEST.in | 7 +++ opnfv-theme/README.rst | 48 +++++++++++++++++++++ opnfv-theme/setup.py | 30 +++++++++++++ opnfv-theme/sphinx_opnfv_theme/__init__.py | 15 +++++++ opnfv-theme/sphinx_opnfv_theme/opnfv/layout.html | 5 +++ .../opnfv/my_custom_sidebar.html | 3 ++ .../sphinx_opnfv_theme/opnfv/relations.html | 15 +++++++ .../sphinx_opnfv_theme/opnfv/static/favicon.ico | Bin 0 -> 15086 bytes .../sphinx_opnfv_theme/opnfv/static/logo.png | Bin 0 -> 2829 bytes .../sphinx_opnfv_theme/opnfv/static/my-styles.css | 33 ++++++++++++++ opnfv-theme/sphinx_opnfv_theme/opnfv/theme.conf | 7 +++ 12 files changed, 168 insertions(+) create mode 100644 opnfv-theme/.gitignore create mode 100644 opnfv-theme/MANIFEST.in create mode 100644 opnfv-theme/README.rst create mode 100644 opnfv-theme/setup.py create mode 100644 opnfv-theme/sphinx_opnfv_theme/__init__.py create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/layout.html create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/my_custom_sidebar.html create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/relations.html create mode 100755 opnfv-theme/sphinx_opnfv_theme/opnfv/static/favicon.ico create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/static/logo.png create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/static/my-styles.css create mode 100644 opnfv-theme/sphinx_opnfv_theme/opnfv/theme.conf diff --git a/opnfv-theme/.gitignore b/opnfv-theme/.gitignore new file mode 100644 index 000000000..83b2238da --- /dev/null +++ b/opnfv-theme/.gitignore @@ -0,0 +1,5 @@ +/dist +/build +*.egg-info +*.pyc +__pycache__ diff --git a/opnfv-theme/MANIFEST.in b/opnfv-theme/MANIFEST.in new file mode 100644 index 000000000..a5886cd20 --- /dev/null +++ b/opnfv-theme/MANIFEST.in @@ -0,0 +1,7 @@ +include *.txt +include *.rst + +recursive-include sphinx_opnfv_theme * +recursive-include sphinx_opnfv_theme/opnfv * + +global-exclude *.pyc diff --git a/opnfv-theme/README.rst b/opnfv-theme/README.rst new file mode 100644 index 000000000..484a7a793 --- /dev/null +++ b/opnfv-theme/README.rst @@ -0,0 +1,48 @@ +OPNFV Documentation Theme +========================= + +This theme is used for all OPNFV documentation and is released seperatly +from the documentation itself. It's and extention of the `Sphinx +Bootstrap Theme`_ + +Installation +------------ + +Here's how to install the theme from PyPI_ + +To install and configure the theme do the following. + +#. Install the theme from pypi:: + + $ pip install sphinx_opnfv_theme + +#. Configure Sphinx to use the theme: + +.. code-block:: python + + # conf.py + import sphinx_opnfv_theme + + # ... + + html_theme = 'opnfv' + html_theme_path = sphinx_opnfv_theme.get_html_theme_path() + +Customization +------------- + +There are no customization specific to this theme yet, but all +all customizations_ Sphinx Bootstrap Theme are supported. + +If you'd like your documentation to match OPNFV's style configure the +following options for the bootstrap theme:: + + html_theme_options = { + 'bootswatch_theme': 'journal', + 'navbar_sidebarrel': false, + 'navbar_title': '', + } + +.. _Sphinx Bootstrap Theme: https://github.com/ryan-roemer/sphinx-bootstrap-theme +.. _Pypi: http://pypi.python.org/pypi/sphinx-opnfv-theme/ +.. _customizations: https://github.com/ryan-roemer/sphinx-bootstrap-theme#customization diff --git a/opnfv-theme/setup.py b/opnfv-theme/setup.py new file mode 100644 index 000000000..5375c0940 --- /dev/null +++ b/opnfv-theme/setup.py @@ -0,0 +1,30 @@ +from setuptools import setup, find_packages + +from sphinx_opnfv_theme import __version__ + +with open('README.rst') as f: + readme_text = f.read() + +setup( + name='sphinx_opnfv_theme', + description="OPNFV Theme for Sphinx", + long_description=readme_text, + url='https://docs.opnfv.org/', + author='Trevor Bramwell', + author_email='tbramwell@linuxfoundation.org', + version=__version__, + entry_points = { + 'sphinx.html_themes': [ + 'opnfv = sphinx_opnfv_theme', + ] + }, + packages=find_packages(), + install_requires = [ + 'sphinx_bootstrap_theme', + 'sphinxcontrib.httpdomain', + ], + include_package_data=True, + package_data = { + 'sphinx_opnfv_theme': ['opnfv/**',] + }, +) diff --git a/opnfv-theme/sphinx_opnfv_theme/__init__.py b/opnfv-theme/sphinx_opnfv_theme/__init__.py new file mode 100644 index 000000000..007927521 --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/__init__.py @@ -0,0 +1,15 @@ +"""OPNFV Sphinx Theme""" + +from os import path + +__version__='0.1.1' + + +def get_html_theme_path(): + """Return list of HTML theme paths.""" + local_path = path.abspath(path.dirname(__file__)) + return [local_path] + +def setup(app): + """Required by Sphinx to create the theme.""" + app.add_html_theme('opnfv', path.abspath(path.dirname(__file__))) diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/layout.html b/opnfv-theme/sphinx_opnfv_theme/opnfv/layout.html new file mode 100644 index 000000000..ddd674cf1 --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/opnfv/layout.html @@ -0,0 +1,5 @@ +{# Import the theme's layout. #} +{% extends "bootstrap/layout.html" %} + +{# Custom CSS overrides #} +{% set css_files = css_files + ['_static/my-styles.css'] %} diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/my_custom_sidebar.html b/opnfv-theme/sphinx_opnfv_theme/opnfv/my_custom_sidebar.html new file mode 100644 index 000000000..6b259bc93 --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/opnfv/my_custom_sidebar.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/relations.html b/opnfv-theme/sphinx_opnfv_theme/opnfv/relations.html new file mode 100644 index 000000000..5bad0b562 --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/opnfv/relations.html @@ -0,0 +1,15 @@ +
+
+ {% if prev %} + Prev Page + {% else %} + + {% endif %} + + {% if next %} + Next Page + {% else %} + + {% endif %} +
+
\ No newline at end of file diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/static/favicon.ico b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/favicon.ico new file mode 100755 index 000000000..bbe55ab40 Binary files /dev/null and b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/favicon.ico differ diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/static/logo.png b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/logo.png new file mode 100644 index 000000000..1519503eb Binary files /dev/null and b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/logo.png differ diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/static/my-styles.css b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/my-styles.css new file mode 100644 index 000000000..8feb45bfd --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/opnfv/static/my-styles.css @@ -0,0 +1,33 @@ +body { + font-family: Helvetica, sans-serif; + font-size: 16px; +} + +body a { + color: #27CCC0; +} + +body a:hover { + color: #676767; +} + +.navbar-brand img { + height: 200%; + margin-top: -5%; +} + +.navbar, h1, h2, h3, h4, h5, h6 { + font-family: Helvetica, sans-serif; +} + +.navbar-text{ + color: #676767; +} + +.navbar-form.navbar-right{ + padding: 0; +} + +.navbar-form .form-control{ + width: 150px; +} diff --git a/opnfv-theme/sphinx_opnfv_theme/opnfv/theme.conf b/opnfv-theme/sphinx_opnfv_theme/opnfv/theme.conf new file mode 100644 index 000000000..66424aa1f --- /dev/null +++ b/opnfv-theme/sphinx_opnfv_theme/opnfv/theme.conf @@ -0,0 +1,7 @@ +[theme] +inherit = bootstrap +stylesheet = bootstrap-sphinx.css +pygments_style = tango + +# Theme Options exposed by html_theme_options +[options] -- cgit 1.2.3-korg