Build GStreamer modules API documentation as part of our build
authorThibault Saunier <tsaunier@igalia.com>
Fri, 26 Apr 2019 01:05:06 +0000 (21:05 -0400)
committerThibault Saunier <tsaunier@igalia.com>
Mon, 13 May 2019 15:39:10 +0000 (11:39 -0400)
Adding a nice landing page.

And update emoticons.

Using meson subprojects

18 files changed:
images/distribute.svg [new file with mode: 0644]
markdown/api.md [new file with mode: 0644]
markdown/doc_index.md [new file with mode: 0644]
markdown/gst_index.md [new file with mode: 0644]
markdown/index.md
markdown/libs.md [new file with mode: 0644]
markdown/plugins_doc.md [new file with mode: 0644]
markdown/simple-index.md [new file with mode: 0644]
meson.build
meson_options.txt [new file with mode: 0644]
scripts/generate_sitemap.py [new file with mode: 0755]
sitemap.txt
theme/extra/images/api-reference.svg [new file with mode: 0644]
theme/extra/images/deploy.png [new file with mode: 0644]
theme/extra/images/design-guidelines.svg [new file with mode: 0644]
theme/extra/images/tutorials.png [new file with mode: 0644]
theme/extra/templates/navbar_links.html [new file with mode: 0644]
theme/less/variables.less [deleted file]

diff --git a/images/distribute.svg b/images/distribute.svg
new file mode 100644 (file)
index 0000000..adca56c
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg9842"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="distribute.svg">
+  <defs
+     id="defs9844" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.839192"
+     inkscape:cx="4.8937873"
+     inkscape:cy="24.853738"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     borderlayer="true"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="2560"
+     inkscape:window-height="1376"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid10400" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata9847">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <g
+       transform="translate(-100.91898,109.40724)"
+       style="display:inline"
+       id="g32799"
+       inkscape:label="insert-object">
+      <path
+         sodipodi:nodetypes="cccccccccccc"
+         inkscape:connector-curvature="0"
+         id="path15214"
+         d="m 109.0002,930 -4.99967,3.14259 0,4.71482 4.99951,3.14259 5.00049,-3.14259 0,-4.71482 z m 0,6 -3.64507,-2.17601 3.64507,-2.29205 3.64623,2.29205 z"
+         style="fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/markdown/api.md b/markdown/api.md
new file mode 100644 (file)
index 0000000..71c531a
--- /dev/null
@@ -0,0 +1 @@
+# API reference
diff --git a/markdown/doc_index.md b/markdown/doc_index.md
new file mode 100644 (file)
index 0000000..fb183b5
--- /dev/null
@@ -0,0 +1,86 @@
+---
+short-description: Tutorials and Manuals
+render-subpages: false
+...
+
+# Documentation and Tutorials
+
+Feel free to jump straight to the download section, start practicing
+with the tutorials, or read the F.A.Q. if you don’t know what this is
+all about.
+
+## General
+
+ * [Application Development Manual (Read this first)](application-development/index.md)
+ * [Frequently Asked Questions](frequently-asked-questions/index.md)
+ * [Plugin Writer's Guide](plugin-development/index.md)
+ * <a href="/data/doc/gstreamer/head/gstreamer/html/">Core Reference</a>
+ * <a href="/data/doc/gstreamer/head/gstreamer-libs/html/">Core Libraries Reference</a>
+ * [Core Design Documentation](design/index.md)
+ * [GStreamer 0.10 to 1.0 porting guide](https://gitlab.freedesktop.org/gstreamer/gstreamer/raw/master/docs/random/porting-to-1.0.txt)
+
+<!-- FIXME: save useful bits from wiki
+| GStreamer Wiki (see esp. <a href="&site;/wiki/ReleasePlanning">ReleasePlanning</a> and <a href="&site;/wiki/SubmittingPatches">SubmittingPatches</a>)
+| <a href="&site;/wiki/">HTML</a> |
+-->
+
+
+## GStreamer APIs References
+
+* [GStreamer Core library](gstreamer)
+* [GStreamer Libraries Reference](libs.html)
+* [GStreamer Plugins Reference](plugins_doc.html)
+
+> ![Warning](images/icons/emoticons/warning.svg) Only the API in libraries from
+> GStreamer core and gst-plugins-base are guaranteed to be API and ABI stable
+
+
+## Other modules
+
+ * [GStreamer Editing Services Reference](gst-editing-services)
+ * [GStreamer RTSP Server Reference](gst-rtsp-server)
+ * [GStreamer VAAPI Reference](vaapi)
+ * [GStreamer Validate](gst-devtools)
+ * <a href="/data/doc/orc/">Orc - Optimized inner loop Runtime Compiler</a>
+
+## GStreamer Conference Videos and Slides
+
+* [GStreamer Conference 2016: Videos and Slides] [(PDF slides)]
+* [GStreamer Conference 2015: Videos and Slides] [(PDF slides)][1]
+* [GStreamer Conference 2014: Videos and Slides] [(PDF slides)][2]
+* [GStreamer Conference 2013: Videos and Slides] [(PDF slides)][3]
+* [GStreamer Conference 2012: Videos and Slides] [(PDF slides)][4]
+* [GStreamer Conference 2011: Videos and Slides] [(PDF slides)][5]
+* [GStreamer Conference 2010: Videos and Slides] [(PDF slides)][6]
+
+  [GStreamer Conference 2016: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2016
+  [GStreamer Conference 2015: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2015
+  [GStreamer Conference 2014: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2014
+  [GStreamer Conference 2013: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2013
+  [GStreamer Conference 2012: Videos and Slides]: http://gstconf.ubicast.tv/channels/#gstreamer-conference-2012
+  [GStreamer Conference 2011: Videos and Slides]: http://gstconf.ubicast.tv/channels/#conferences-2011
+  [GStreamer Conference 2010: Videos and Slides]: http://gstconf.ubicast.tv/channels/#conferences-2010
+  [(PDF slides)]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2016/
+  [1]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2015/
+  [2]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2014/
+  [3]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2013/
+  [4]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2012/
+  [5]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2011/
+  [6]: https://gstreamer.freedesktop.org/data/events/gstreamer-conference/2010/
+
+
+## GStreamer licensing advisory
+
+The GStreamer community provides the following licensing advisory for
+developers planing on or already using GStreamer for their applications:
+
+ * [GStreamer Licensing Advisory](licensing.md)
+
+
+## GStreamer plugin module split-up
+
+[An explanation of the various plugin modules and how they were split up](splitup.md)
+
+## RTP and RTSP support in GStreamer
+
+ * [RTSP and RTP component overview](rtp.md)
diff --git a/markdown/gst_index.md b/markdown/gst_index.md
new file mode 100644 (file)
index 0000000..100b249
--- /dev/null
@@ -0,0 +1,7 @@
+# GStreamer
+
+This is the main GStreamer documentation. It contains two sections
+the first one contains manuals, tutorials and misc answers to
+questions people have concerning how to use/get involved in
+the GStreamer project. The second section is the GStreamer API
+reference.
index 35748de..a1d7319 100644 (file)
@@ -1,85 +1,41 @@
-# GStreamer documentation
-
-Feel free to jump straight to the download section, start practicing
-with the tutorials, or read the F.A.Q. if you don’t know what this is
-all about.
-
-
-
-## General
-
- * [Application Development Manual (Read this first)](application-development/index.md)
- * [Frequently Asked Questions](frequently-asked-questions/index.md)
- * [Plugin Writer's Guide](plugin-development/index.md)
- * <a href="/data/doc/gstreamer/head/gstreamer/html/">Core Reference</a>
- * <a href="/data/doc/gstreamer/head/gstreamer-libs/html/">Core Libraries Reference</a>
- * [Core Design Documentation](design/index.md)
- * [GStreamer 0.10 to 1.0 porting guide](https://gitlab.freedesktop.org/gstreamer/gstreamer/raw/master/docs/random/porting-to-1.0.txt)
-
-<!-- FIXME: save useful bits from wiki
-| GStreamer Wiki (see esp. <a href="&site;/wiki/ReleasePlanning">ReleasePlanning</a> and <a href="&site;/wiki/SubmittingPatches">SubmittingPatches</a>)
-| <a href="&site;/wiki/">HTML</a> |
--->
-
-
-## GStreamer Plugins-Base Module Libraries Reference
-
- * <a href="/data/doc/gstreamer/head/gst-plugins-base-libs/html/">GStreamer Base Plugins Libraries Reference</a>
-
-## GStreamer Plugins-Bad Module Libraries Reference
-
-Note: The API from these gst-plugins-bad libraries is unstable and can
-change between releases.
-
-Only the API in libraries from GStreamer core and
-gst-plugins-base are guaranteed to be API and ABI stable
-
- * <a href="/data/doc/gstreamer/head/gst-plugins-bad-libs/html/">GStreamer Bad Plugins Libraries Reference</a>
-
-## Plugin Modules
-
- * <a href="plugins.html">Overview of all Plug-ins</a>
- * <a href="/data/doc/gstreamer/head/gstreamer-plugins/html/">GStreamer Core Plugins Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-plugins-base-plugins/html/">GStreamer Base Plugins Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-plugins-good-plugins/html/">GStreamer Good Plugins Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/">GStreamer Ugly Plugins Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/">GStreamer Bad Plugins Reference</a>
-
-## Other modules
-
- * <a href="/data/doc/gstreamer/head/gstreamer-editing-services/html/">GStreamer Editing Services Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-rtsp-server/html/">GStreamer RTSP Server Reference</a>
- * <a href="/data/doc/gstreamer/head/gstreamer-vaapi-plugins/html/">GStreamer VAAPI Reference</a>
- * <a href="/data/doc/gstreamer/head/qt-gstreamer/html/">QtGStreamer Reference</a>
- * <a href="/data/doc/gstreamer/head/gst-validate/html/">GstValidate Reference</a>
- * <a href="/data/doc/orc/">Orc - Optimized inner loop Runtime Compiler</a>
- * <a href="/data/doc/gstreamer/head/gnonlin/html/">GStreamer Non-Linear Multimedia Editing Plugins Reference (deprecated, use GStreamer Editing Services instead)</a>
-
-## GStreamer Conference Videos and Slides
-
-* <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2018">GStreamer Conference 2018: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2018/">(PDF slides)</a>
-* <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2017">GStreamer Conference 2017: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2017/">(PDF slides)</a>
-* <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2016">GStreamer Conference 2016: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2016/">(PDF slides)</a>
-* <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2015">GStreamer Conference 2015: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2015/">(PDF slides)</a>
- * <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2014">GStreamer Conference 2014: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2014/">(PDF slides)</a>
- * <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2013">GStreamer Conference 2013: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2013/">(PDF slides)</a>
- * <a href="http://gstconf.ubicast.tv/channels/#gstreamer-conference-2012">GStreamer Conference 2012: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2012/">(PDF slides)</a>
- * <a href="http://gstconf.ubicast.tv/channels/#conferences-2011">GStreamer Conference 2011: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2011/">(PDF slides)</a>
-* <a href="http://gstconf.ubicast.tv/channels/#conferences-2010">GStreamer Conference 2010: Videos and Slides</a> <a href="/data/events/gstreamer-conference/2010/">(PDF slides)</a>
-
-
-## GStreamer licensing advisory
-
-The GStreamer community provides the following licensing advisory for
-developers planing on or already using GStreamer for their applications:
-
- * <a href="/documentation/licensing.html">GStreamer Licensing Advisory</a>
-
-
-## GStreamer plugin module split-up
-
-[An explanation of the various plugin modules and how they were split up](splitup.md)
-
-## RTP and RTSP support in GStreamer
-
- * [RTSP and RTP component overview](rtp.md)
+---
+full-width: true
+title: GStreamer
+render-subpages: false
+...
+
+
+<div class="container">
+<div class="page-header">
+    <h1>GStreamer: a flexible, fast and multiplatform multimedia framework</h1>
+    <p>
+GStreamer is an extremely powerful and versatile framework for creating
+streaming media applications. Many of the virtues of the GStreamer
+framework come from its modularity: GStreamer can seamlessly incorporate
+new plugin modules. But because modularity and power often come at a
+cost of greater complexity, writing new applications is not always easy.
+    </p>
+    <a class="btn btn-default btn-xl page-scroll" href="doc_index.html" data-hotdoc-relative-link=true>Get Started</a>
+</div>
+</div>
+
+<div class="row toned-row">
+    <div class="col-lg-2 col-lg-offset-2 col-xs-6 col-md-3">
+      <a class="icon" id="apiref" href="api.html" data-hotdoc-relative-link=true>API Reference</a>
+    </div>
+    <div class="col-lg-2 col-xs-6 col-md-3">
+      <a class="icon" id="hig" href="application-development/index.html" data-hotdoc-relative-link=true>
+        Application developer manual
+      </a>
+    </div>
+    <div class="col-lg-2 col-xs-6 col-md-3">
+      <a class="icon" id="tutorials" href="tutorials/index.html" data-hotdoc-relative-link=true>
+        Tutorials
+      </a>
+    </div>
+    <div class="col-lg-2 col-xs-6 col-md-3">
+      <a class="icon" id="deploy" href="deploying/index.html" data-hotdoc-relative-link=true>
+        Deploying
+      </a>
+    </div>
+</div>
diff --git a/markdown/libs.md b/markdown/libs.md
new file mode 100644 (file)
index 0000000..27ccc4a
--- /dev/null
@@ -0,0 +1,5 @@
+---
+short-description: All the GStreamer libraries from the various components
+...
+
+# GStreamer libraries
diff --git a/markdown/plugins_doc.md b/markdown/plugins_doc.md
new file mode 100644 (file)
index 0000000..657c120
--- /dev/null
@@ -0,0 +1,5 @@
+---
+short-description: All the GStreamer plugins from its various components
+...
+
+# GStreamer plugins
diff --git a/markdown/simple-index.md b/markdown/simple-index.md
new file mode 100644 (file)
index 0000000..b5a8245
--- /dev/null
@@ -0,0 +1,11 @@
+---
+title: GStreamer
+...
+
+# GStreamer: a flexible, fast and multiplatform multimedia framework
+
+GStreamer is an extremely powerful and versatile framework for creating
+streaming media applications. Many of the virtues of the GStreamer
+framework come from its modularity: GStreamer can seamlessly incorporate
+new plugin modules. But because modularity and power often come at a
+cost of greater complexity, writing new applications is not always easy.
\ No newline at end of file
index ae90589..ea6b34d 100644 (file)
@@ -3,24 +3,70 @@ project('GStreamer manuals and tutorials', 'c',
   meson_version: '>=0.48.0')
 
 hotdoc = import('hotdoc')
+hotdoc_subprojects = []
 
 apiversion = '1.0'
+if host_machine.system() == 'windows'
+  pathsep = ';'
+else
+  pathsep = ':'
+endif
+
+libs = ''
+plugins_doc = ''
+deps = []
+plugins_sitemap = ''
+if get_option('built_subprojects') != ''
+    foreach project_name: get_option('built_subprojects').split(',')
+        sub = subproject(project_name)
+        if sub.get_variable('build_hotdoc')
+            message('Building @0@ documentation'.format(project_name))
+
+            foreach lib: sub.get_variable('libs_doc')
+              hotdoc_subprojects += [lib]
+              libs += lib.full_path() + pathsep
+              deps += [lib]
+            endforeach
+
+            foreach plugin_doc: sub.get_variable('plugins_doc')
+              plugins_doc += plugin_doc.full_path() + pathsep
+              hotdoc_subprojects += [plugin_doc]
+              deps += [plugin_doc]
+            endforeach
+        else
+            message('@0@ did not build hotdoc documentation, can\'t build API doc'.format(project_name))
+        endif
+    endforeach
+endif
+
+if get_option('use_portal_index')
+  index = 'markdown/index.md'
+else
+  index = 'markdown/simple-index.md'
+endif
+sitemap_gen = find_program('scripts/generate_sitemap.py')
+sitemap = configure_file(command: [sitemap_gen, '@INPUT@', '@OUTPUT@',
+  index.split('/')[1], libs, plugins_doc],
+  input: 'sitemap.txt',
+  output: 'sitemap.txt')
 
 html_theme = 'https://github.com/hotdoc/hotdoc_lumen_theme/releases/download/0.9/hotdoc_lumen_theme-0.9.tar.xz?sha256=ec3807f13eda2d4914fcf251b7e9607e90f33430725a2b1d433a90c9210a52fc'
 
 gstreamer_doc = hotdoc.generate_doc('GStreamer',
     project_version: apiversion,
-    sitemap: 'sitemap.txt',
-    index: 'markdown/index.md',
-    build_by_default: true,
+    sitemap: sitemap,
+    index: index,
     install: true,
     extra_assets: [join_paths(meson.current_source_dir(), 'images')],
     syntax_highlighting_activate: true,
     html_theme: html_theme,
     include_paths: join_paths(meson.current_source_dir(), 'examples'),
     html_extra_theme: join_paths(meson.current_source_dir(), 'theme/extra'),
-    edit_on_github_repository: 'https://gitlab.freedesktop.org/gstreamer/gst-docs/',
-    edit_on_github_branch: 'master',
+    dependencies: deps,
+    subprojects: hotdoc_subprojects,
     disable_incremental_build: true,
+    gst_list_plugins_page: 'plugins_doc.md',
     devhelp_activate: true,
+    build_always_stale: true,
+    edit_on_github_repository: 'https://gitlab.freedesktop.org/gstreamer/gst-docs/',
 )
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644 (file)
index 0000000..06f5ecf
--- /dev/null
@@ -0,0 +1,6 @@
+# Special option to tell `gst-docs` what subprojects with
+# API documentation can be used.
+option('built_subprojects', type : 'string', value : '')
+# Special entry to make `gst-docs` usable as part of a bigger
+# portal (gnome-portal for example).
+option('use_portal_index', type : 'boolean', value : true)
diff --git a/scripts/generate_sitemap.py b/scripts/generate_sitemap.py
new file mode 100755 (executable)
index 0000000..ebb6b91
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+import os
+import sys
+
+
+if __name__ == "__main__":
+    in_, out, index_md = sys.argv[1], sys.argv[2], sys.argv[3]
+    with open(in_) as f:
+        index = f.read()
+        if sys.argv[4]:
+            index = '\n'.join('\t' + l for l in index.splitlines())
+            libs, plugins = sys.argv[4].split(os.pathsep), sorted(
+                sys.argv[5].split(os.pathsep), key=lambda x: os.path.basename(x))
+            index += '\n       api.md\n                libs.md'
+            for lib in libs:
+                if not lib:
+                    continue
+                index += "\n                   " + lib + '.json'
+            index += '\n               plugins_doc.md'
+            for plugin in plugins:
+                if not plugin:
+                    continue
+                index += "\n                   " + plugin + '.json'
+            index = '%s\n%s' % (index_md, index)
+        with open(out, 'w') as fw:
+            fw.write(index)
index 0d84078..93a0978 100644 (file)
@@ -1,11 +1,11 @@
-index.md
-        installing/index.md
-               installing/for-android-development.md
-               installing/for-ios-development.md
-               installing/on-mac-osx.md
-               installing/on-windows.md
+doc_index.md
+       installing/index.md
+               installing/for-android-development.md
+               installing/for-ios-development.md
+               installing/on-mac-osx.md
+               installing/on-windows.md
                installing/on-linux.md
-               installing/building-from-source-using-cerbero.md
+               installing/building-from-source-using-cerbero.md
        frequently-asked-questions/index.md
                frequently-asked-questions/general.md
                frequently-asked-questions/dependencies.md
@@ -50,7 +50,7 @@ index.md
                        application-development/appendix/integration.md
                        application-development/appendix/licensing.md
                        application-development/appendix/quotes.md
-        tutorials/index.md
+       tutorials/index.md
                tutorials/basic/index.md
                        tutorials/basic/hello-world.md
                        tutorials/basic/concepts.md
@@ -206,4 +206,4 @@ index.md
                design/draft-tagreading.md
                design/toc.md
                design/tracing.md
-               design/trickmodes.md
\ No newline at end of file
+               design/trickmodes.md
diff --git a/theme/extra/images/api-reference.svg b/theme/extra/images/api-reference.svg
new file mode 100644 (file)
index 0000000..f25f43d
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='view-dual-symbolic.svg' height='16' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.3.1 r9886' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:bbox-nodes='true' inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer12' inkscape:cx='8.341015' inkscape:cy='-17.299448' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#3a3b39' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='false' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='709' inkscape:window-maximized='1' inkscape:window-width='1366' inkscape:window-x='0' inkscape:window-y='27' inkscape:zoom='1'>
+    <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='60.0002px' originy='650.00012px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'/>
+  <g inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer10' inkscape:label='devices' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer11' inkscape:label='apps' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer13' inkscape:label='places' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='g71291' inkscape:label='emotes' style='display:inline' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline' transform='translate(-181,-867.00012)'/>
+  <g inkscape:groupmode='layer' id='layer12' inkscape:label='actions' style='display:inline' transform='translate(-181,-867.00012)'>
+    
+    <path inkscape:connector-curvature='0' d='m 181,868 0,1 0,11 0,1 1,0 5,0 c 0.1754,0 0.52538,0.15166 0.8125,0.34375 0.28712,0.19209 0.46875,0.375 0.46875,0.375 L 189,882.4375 l 0.71875,-0.75 c 0,0 0.8963,-0.6875 1.28125,-0.6875 l 5,0 1,0 0,-1 0,-11 0,-1 -1,0 -5,0 c -0.87652,0 -1.56017,0.34756 -2.03125,0.6875 -0.0301,-0.0207 -0.031,-0.0105 -0.0625,-0.0312 C 188.44557,868.35254 187.82811,868 187,868 l -5,0 -1,0 z m 2,2 4,0 c 0.13821,0 0.51476,0.14746 0.8125,0.34375 0.29774,0.19629 0.5,0.375 0.5,0.375 l 0.71875,0.6875 0.6875,-0.71875 c 0,0 0.89975,-0.6875 1.28125,-0.6875 l 4,0 0,9 -4,0 c -0.87693,0 -1.56008,0.34735 -2.03125,0.6875 -0.0196,-0.0135 -0.011,-0.0177 -0.0312,-0.0312 C 188.47725,879.34834 187.83512,879 187,879 l -4,0 0,-9 z' id='rect7352-28-4-8' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans'/>
+    <rect height='2' id='rect42942-5-3-1-4-4-5-9' inkscape:label='a' rx='0.375' ry='0.375' style='opacity:0.35;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' transform='scale(-1,1)' width='3.0000136' x='-187.00021' y='871.99976'/>
+    <rect height='2.0002136' id='rect42944-7-5-3-5-1-5-0-2-62-5' inkscape:label='a' rx='0.375' ry='0.375' style='opacity:0.35;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' transform='scale(-1,1)' width='3.0000129' x='-187.00021' y='874.99976'/>
+    <rect height='2.0002136' id='rect42942-5-3-1-4-4-6-0-1' inkscape:label='a' rx='0.375' ry='0.375' style='opacity:0.35;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' transform='scale(-1,1)' width='3.0000136' x='-194.00021' y='871.99976'/>
+    <rect height='2.0002136' id='rect42944-7-5-3-5-1-5-0-2-6-4-6' inkscape:label='a' rx='0.375' ry='0.375' style='opacity:0.35;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' transform='scale(-1,1)' width='3.0000129' x='-194.00021' y='874.99976'/>
+  </g>
+</svg>
diff --git a/theme/extra/images/deploy.png b/theme/extra/images/deploy.png
new file mode 100644 (file)
index 0000000..6f45592
Binary files /dev/null and b/theme/extra/images/deploy.png differ
diff --git a/theme/extra/images/design-guidelines.svg b/theme/extra/images/design-guidelines.svg
new file mode 100644 (file)
index 0000000..00b3480
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='UTF-8' standalone='no'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:dc='http://purl.org/dc/elements/1.1/' sodipodi:docname='gtk3-widget-factory-symbolic.svg' height='16.03125' id='svg7384' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:osb='http://www.openswatchbook.org/uri/2009/osb' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns:svg='http://www.w3.org/2000/svg' inkscape:version='0.48.5 r10040' version='1.1' width='16' xmlns='http://www.w3.org/2000/svg'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:bbox-paths='true' bordercolor='#666666' borderopacity='1' inkscape:current-layer='layer9' inkscape:cx='15.183262' inkscape:cy='0.30876' gridtolerance='10' inkscape:guide-bbox='true' guidetolerance='10' id='namedview88' inkscape:object-nodes='false' inkscape:object-paths='false' objecttolerance='10' pagecolor='#555753' inkscape:pageopacity='1' inkscape:pageshadow='2' showborder='false' showgrid='false' showguides='true' inkscape:snap-bbox='true' inkscape:snap-bbox-midpoints='false' inkscape:snap-global='true' inkscape:snap-grids='true' inkscape:snap-nodes='true' inkscape:snap-others='false' inkscape:snap-to-guides='true' inkscape:window-height='1375' inkscape:window-maximized='1' inkscape:window-width='2560' inkscape:window-x='0' inkscape:window-y='27' inkscape:zoom='16'>
+    <inkscape:grid empspacing='2' enabled='true' id='grid4866' originx='-203px' originy='-251.96875px' snapvisiblegridlinesonly='true' spacingx='1px' spacingy='1px' type='xygrid' visible='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <linearGradient id='linearGradient7212' osb:paint='solid'>
+      <stop id='stop7214' offset='0' style='stop-color:#000000;stop-opacity:1;'/>
+    </linearGradient>
+  </defs>
+  <g inkscape:groupmode='layer' id='layer9' inkscape:label='apps' style='display:inline' transform='translate(-444.0002,35)'>
+    
+    <path inkscape:connector-curvature='0' d='m 446.21875,-34 c -0.64785,0 -1.1875,0.539653 -1.1875,1.1875 l 0,4.625 c 0,0.647847 0.53965,1.1875 1.1875,1.1875 l 11.65625,0 c 0.64785,0 1.15625,-0.539653 1.15625,-1.1875 l 0,-4.625 c 0,-0.647847 -0.5084,-1.1875 -1.15625,-1.1875 l -11.65625,0 z m 0,1 11.65625,0 c 0.11114,0 0.15625,0.07636 0.15625,0.1875 l 0,4.625 c 0,0.111144 -0.0451,0.1875 -0.15625,0.1875 l -11.65625,0 c -0.11114,0 -0.1875,-0.07636 -0.1875,-0.1875 l 0,-4.625 c 0,-0.111144 0.0764,-0.1875 0.1875,-0.1875 z' id='rect7030' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans'/>
+    <path inkscape:connector-curvature='0' d='m 454.0002,-32 0,1 0,0.0312 1.53125,1.375 1.46875,-1.4062 0,-1 -0.75781,0 -0.73828,0.74609 L 454.77754,-32 z' id='path7800' sodipodi:nodetypes='cccccccccc' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans'/>
+    <path inkscape:connector-curvature='0' d='m 446.21875,-26 c -0.64785,0 -1.1875,0.539653 -1.1875,1.1875 l 0,4.65625 c 0,0.647847 0.53965,1.1875 1.1875,1.1875 l 11.65625,0 c 0.64785,0 1.15625,-0.539653 1.15625,-1.1875 l 0,-4.65625 c 0,-0.647847 -0.5084,-1.1875 -1.15625,-1.1875 l -11.65625,0 z m 0,1 11.65625,0 c 0.11114,0 0.15625,0.07636 0.15625,0.1875 l 0,4.65625 c 0,0.111144 -0.0451,0.1875 -0.15625,0.1875 l -11.65625,0 c -0.11114,0 -0.1875,-0.07636 -0.1875,-0.1875 l 0,-4.65625 c 0,-0.111144 0.0764,-0.1875 0.1875,-0.1875 z' id='rect7811' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Sans;-inkscape-font-specification:Sans'/>
+    <rect height='2' id='rect7813' rx='0' ry='0' style='color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='8' x='448.00021' y='-24'/>
+    <rect height='1' id='rect7815' rx='0' ry='0' style='opacity:0.3;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='12.860504' x='445.53082' y='-29'/>
+    <rect height='1' id='rect7817' rx='0' ry='0' style='opacity:0.3;color:#000000;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.39999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new' width='12.860504' x='445.53085' y='-20.96875'/>
+  </g>
+</svg>
diff --git a/theme/extra/images/tutorials.png b/theme/extra/images/tutorials.png
new file mode 100644 (file)
index 0000000..ae69a25
Binary files /dev/null and b/theme/extra/images/tutorials.png differ
diff --git a/theme/extra/templates/navbar_links.html b/theme/extra/templates/navbar_links.html
new file mode 100644 (file)
index 0000000..f510ef3
--- /dev/null
@@ -0,0 +1,25 @@
+@require(page)
+
+<li class="dropdown">
+    <a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        API References<span class="caret"></span>
+    </a>
+       <ul class="dropdown-menu" id="modules-menu">
+               @for tup in (("gstreamer-1.0/gi-index.html","GStreamer core"), \
+                               ("libs.html","GStreamer Libraries"),\
+                               ("plugins_doc.html","GStreamer Plugins")):
+                       <li>
+                               <a href="@tup[0]">@tup[1]</a>
+                       </li>
+               @end
+</li>
+
+<li>
+    <a href="application-development/index.html">Application manual</a>
+</li>
+
+
+<li>
+    <a href="tutorials/index.html">Tutorials</a>
+</li>
+
diff --git a/theme/less/variables.less b/theme/less/variables.less
deleted file mode 100644 (file)
index 7f9477c..0000000
+++ /dev/null
@@ -1,875 +0,0 @@
-// Lumen 3.3.7
-// Variables
-// --------------------------------------------------
-
-
-//== Colors
-//
-//## Gray and brand colors for use across Bootstrap.
-
-@gray-base:              #000;
-@gray-darker:            lighten(@gray-base, 13.5%); // #222
-@gray-dark:              lighten(@gray-base, 20%);   // #333
-@gray:                   lighten(@gray-base, 33.5%); // #555
-@gray-light:             lighten(@gray-base, 60%);   // #999
-@gray-lighter:           lighten(@gray-base, 93.5%); // #eee
-
-@brand-primary:         #158CBA;
-@brand-success:         #28B62C;
-@brand-info:            #75CAEB;
-@brand-warning:         #FF851B;
-@brand-danger:          #FF4136;
-
-
-//== Scaffolding
-//
-//## Settings for some of the most global styles.
-
-//** Background color for `<body>`.
-@body-bg:               #fff;
-//** Global text color on `<body>`.
-@text-color:            @gray;
-
-//** Global textual link color.
-@link-color:            @brand-primary;
-//** Link hover color set via `darken()` function.
-@link-hover-color:      @link-color;
-//** Link hover decoration.
-@link-hover-decoration: underline;
-
-
-//== Typography
-//
-//## Font, line-height, and color for body text, headings, and more.
-
-@font-family-sans-serif:  "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
-@font-family-serif:       Georgia, "Times New Roman", Times, serif;
-//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
-@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the `<body>`.
-@headings-font-family:    inherit;
-@headings-font-weight:    400;
-@headings-line-height:    1.1;
-@headings-color:          @gray-dark;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     7px;
-@padding-base-horizontal:   12px;
-
-@padding-large-vertical:    13px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    4px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       5px;
-@border-radius-small:       2px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicate dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for `<th>`s and `<td>`s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            @gray-lighter;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              @gray;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             darken(@btn-default-bg, 5%);
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base:         @border-radius-base;
-@btn-border-radius-large:        @border-radius-large;
-@btn-border-radius-small:        @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** `<input>` background color
-@input-bg:                       #fff;
-//** `<input disabled>` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for `<input>`s
-@input-color:                    @gray;
-//** `<input>` border color
-@input-border:                   darken(#f8f8f8, 6.5%);
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #66afe9;
-
-//** Placeholder text color
-@input-color-placeholder:        @gray-light;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 4);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-//** `.form-group` margin
-@form-group-margin-bottom:       15px;
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                @input-border;
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            @gray-lighter;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-light;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      @gray-dark;
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         transparent;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-lighter;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal-background:  1040;
-@zindex-modal:             1050;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    45px;
-@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));
-@navbar-margin-bottom:             @line-height-computed;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @text-color;
-@navbar-default-bg:                #f8f8f8;
-@navbar-default-border:            @input-border;
-
-// Navbar links
-@navbar-default-link-color:                @gray-light;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-link-hover-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       @gray-lighter;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-hover-color;
-@navbar-default-brand-hover-color:         @navbar-default-link-hover-color;
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #fff;
-@navbar-default-toggle-icon-bar-bg:        @gray-light;
-@navbar-default-toggle-border-color:       @gray-lighter;
-
-
-//=== Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      @gray-light;
-@navbar-inverse-bg:                         #fff;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 @gray-light;
-@navbar-inverse-link-hover-color:           @gray-dark;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             transparent;
-@navbar-inverse-link-disabled-color:        @gray-lighter;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            @gray-lighter;
-@navbar-inverse-toggle-icon-bar-bg:         @gray-light;
-@navbar-inverse-toggle-border-color:        @gray-lighter;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         #fff;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     @navbar-default-border;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             #fff;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   @nav-tabs-border-color;
-
-@nav-tabs-justified-link-border-color:            @nav-tabs-border-color;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @btn-default-color;
-@pagination-bg:                        @btn-default-bg;
-@pagination-border:                    @btn-default-border;
-
-@pagination-hover-color:               @pagination-color;
-@pagination-hover-bg:                  @pagination-bg;
-@pagination-hover-border:              @pagination-border;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @btn-primary-border;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               @pagination-bg;
-@pagination-disabled-border:           @pagination-border;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   #fafafa;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-@jumbotron-heading-font-size:    ceil((@font-size-base * 4.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #fff;
-@state-success-bg:               @brand-success;
-@state-success-border:           darken(@state-success-bg, 4%);
-
-@state-info-text:                #fff;
-@state-info-bg:                  @brand-info;
-@state-info-border:              darken(@state-info-bg, 12%);
-
-@state-warning-text:             #fff;
-@state-warning-bg:               @brand-warning;
-@state-warning-border:           darken(@state-warning-bg, 5%);
-
-@state-danger-text:              #fff;
-@state-danger-bg:                @brand-danger;
-@state-danger-border:            darken(@state-danger-bg, 10%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         20px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.05);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          @gray-lighter;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 @jumbotron-bg;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             @gray-lighter;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list elements
-@list-group-active-bg:          @component-active-bg;
-//** Background color of active list items
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          transparent;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        transparent;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        transparent;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        transparent;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           transparent;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        transparent;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         transparent;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            @gray-lighter;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     @jumbotron-bg;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @brand-primary;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           normal;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 @well-bg;
-//** Breadcrumb text color
-@breadcrumb-color:              @gray-light;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          ">";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #fff;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  @gray-dark;
-@code-bg:                     #f8f8f8;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint:    @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border:                   @gray-lighter;
-
-// Hotdoc specific variables
-
-// Brand logo
-
-@brand-logo-url: "../../images/gstreamer-logo.svg";