Fix html documentation for offline browsing
authorCristian Greco <cristian@regolo.cc>
Sat, 29 Oct 2016 20:39:13 +0000 (21:39 +0100)
committerAndrew Starr-Bochicchio <asb@debian.org>
Sat, 29 Oct 2016 20:39:13 +0000 (21:39 +0100)
Forwarded: not-needed
Origin: vendor

The patch also includes the makefile and template.txt needed to rebuild
html docs from rst files.

Gbp-Pq: Name fix-html-docs.patch

18 files changed:
docs/css/base.css [new file with mode: 0644]
docs/css/rst.css [new file with mode: 0644]
docs/hacking.html
docs/index.rst
docs/makefile [new file with mode: 0644]
docs/reference-Alerts.html
docs/reference-Bencoding.html
docs/reference-Core.html
docs/reference-Create_Torrents.html
docs/reference-Custom_Storage.html
docs/reference-Error_Codes.html
docs/reference-Filter.html
docs/reference-Plugins.html
docs/reference-Settings.html
docs/reference-Storage.html
docs/reference-Utility.html
docs/reference.html
docs/template.txt [new file with mode: 0644]

diff --git a/docs/css/base.css b/docs/css/base.css
new file mode 100644 (file)
index 0000000..3a4ca84
--- /dev/null
@@ -0,0 +1,136 @@
+/* Page template */
+
+html>body { font-size: 13px; }
+body { text-align: center; }
+
+#container {
+    text-align: left;
+    width: 700px;
+    margin: 0 auto;
+    position: relative;
+}
+
+#headerNav {
+}
+
+#headerNav ul {
+    margin: 2px;
+    list-style: none;
+    font-family: Tahoma;
+    text-align: right;
+    text-transform: uppercase;
+    line-height: 1em;
+}
+
+#headerNav ul li {
+    display: inline;
+    border-left: solid 1px #ccc;
+    padding-left: 10px;
+    padding-right: 10px;
+    margin: 0;
+    font-size: 80%;
+}
+
+#headerNav ul li.first {
+    border: 0;
+}
+
+#headerNav ul li a {
+    border: none;
+    color: #666;
+}
+
+#headerNav ul li a:hover {
+    background: #eee;
+}
+
+#header {
+    height: 116px;
+    width: 695px;
+    background: url(../img/orange.png) #FDA72A no-repeat top left;
+}
+
+#header h1 {
+    margin: 0;
+    padding: 0;
+    float: right;
+    width: 536px;
+    height: 116px;
+    background: url(../img/logo.png);
+}
+
+#header h1 span, #header h2 { display: none; }
+
+#footer {
+    clear: both;
+    width: 695px;
+    height: 49px;
+    background: #D3D3D3 url(../img/footer.png) no-repeat left top;
+    text-align: center;
+    margin-bottom: 1em;
+}
+
+#footer span {
+    line-height: 49px;
+    font-size: 88%;
+    text-align: center;
+    color: #777;
+    display: block;
+}
+
+#main {
+    font-family: Verdana;
+    line-height: 1.25em;
+    text-align: left;
+    margin-top: 10px;
+}
+
+/* Base elements */
+
+* {margin: 0; padding: 0;}
+body { font: 0.8125em Verdana, sans-serif;}
+
+h1, h2, h3 {
+    font: 1.5em Georgia "Times New Roman", serif;
+    letter-spacing: 1px;
+    padding-bottom: 0.5em;
+}
+
+h1 { font-size: 180%; }
+h2 { font-size: 130%; }
+h3 { font-size: 100%; }
+
+p {
+    font-size: 92%;
+    line-height: 1.7em;
+}
+
+a {
+    text-decoration: none;
+    color: #8D370A;
+    border-bottom: dotted 1px #8D370A;
+}
+
+a:hover {
+    border-bottom: solid 1px #8D370A;
+    background: #eee;
+}
+
+#librarySidebar {
+    float: left;
+    width: 150px;
+}
+
+#libraryBody {
+    border-left: solid 1px #eee;
+    padding-left: 10px;
+    margin-left: 158px;
+    margin-right: 10px;
+}
+
+ul, ol { line-height: 1.8em; }
+ul { list-style: square; }
+li { margin-left: 2.8em; font-size: 92%; }
+
+p, ul, ol, img {margin-bottom: 1em;}
+
diff --git a/docs/css/rst.css b/docs/css/rst.css
new file mode 100644 (file)
index 0000000..d3908a1
--- /dev/null
@@ -0,0 +1,245 @@
+.document {
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+.document a {
+    border: none;
+    color: black;
+}
+
+.document a:hover {
+    background: none;
+}
+
+.document a.reference {
+    color: #8D370A;
+    border-bottom: dotted 1px #8D370A;
+}
+
+.document a.reference:hover {
+    border-bottom: solid 1px #8D370A;
+    background: #eee;
+}
+
+div.section {
+    margin-bottom: 3em;
+}
+
+div.section div.section div.section {
+    margin-bottom: 2em;
+}
+
+h3 { text-transform: uppercase; }
+
+div.section p, div.section ul, div.section dl {
+}
+
+table.docinfo {
+    text-align: left;
+    float: right;
+    width: 200px;
+    margin-right: 0px;
+    margin-left: 20px;
+    margin-bottom: 20px;
+}
+
+table.docinfo th {
+    border-top: none;
+    font-size: 72%;
+    padding-left: 10px;
+}
+
+table.docinfo td {
+    padding-left: 10px;
+    font-size: 88%;
+}
+
+table.docinfo tr.field td, table.docinfo tr.field th {display: none;}
+
+h1.title { display: none; }
+
+dt {
+    font-size: 100%;
+    letter-spacing: 2px;
+    line-height: 1em;
+    color: #315586;
+    color: #000;
+    font-family: Tahoma;
+    font-weight: bold;
+}
+
+dd {
+    line-height: 1.5em;
+    margin-left: 1em;
+    margin-bottom: 1em;
+    font-size: 92%;
+}
+
+tt {
+    font: 1em "Courier New", "Courier";
+    color: #315566;
+}
+
+pre {
+    font-family: "Courier", monospace;
+    margin-right: 10px;
+    background: #C1E5F6;
+    border-left: solid 2px #6185A6;
+    border-right: solid 2px #6185A6;
+    padding: 5px 10px 5px 10px;
+
+    background: #f6f6f6;
+    border: solid 1px #ddd;
+    margin: 1em 0;
+}
+
+div.warning, div.note, div.important {
+    width: 80%;
+    margin: 1.5em auto;
+    background: #C1E5F6;
+    background: #F1FFF5;
+    border: solid 1px #D1DFD5;
+    padding: 5px 10px 5px 10px;
+}
+
+p.admonition-title {
+    font-family: Georgia, "Lucida Grande";
+    font-size: 128%;
+    letter-spacing: 2px;
+    text-transform: uppercase;
+    margin: 0 0 0.5em 0;
+    border-bottom: solid 1px #D1DFD5
+}
+
+div.sidebar {
+    background: #f8f8e8;
+    float: right;
+    width: 20em;
+    margin-right: 1em;
+    border: solid 1px #e5e5d5;
+    padding: 1.3em;
+}
+
+div.sidebar p.sidebar-title {
+    font: 1.3em Georgia;
+    border-bottom: solid 1px #e5e5d5;
+    padding-bottom: 0.5em;
+    margin: 0 0 0.5em 0;
+}
+
+h1 { font-size: 230%; }
+h2 { font-size: 180%; }
+h3 { font-size: 130%; }
+
+table { margin-bottom: 1em; border-collapse: collapse; }
+table, th, td { border: none; }
+
+th, td { padding: 0.3em; }
+
+th {
+    text-align: left;
+    background: #f0f0e0;
+    border-right: solid 1px #f0f0e0;
+    border-top: solid 1px #e8e8d8;
+    border-bottom: solid 1px #e8e8d8;
+}
+
+td {
+    background: #f8f8e8;
+    border-right: solid 1px #f8f8e8;
+    border-bottom: solid 1px #e8e8d8;
+}
+
+td td {
+    background: #e8e8d8;
+    border-right: solid 1px #e8e8d8;
+    border-bottom: solid 1px #d8d8c8;
+}
+
+div.topic {
+    border-left: solid 1px #eee;
+    padding-left: 1em;
+    margin: 0 0 1.5em;
+}
+
+p.topic-title {
+    font: 1.3em Georgia, "Times New Roman", serif;
+}
+
+/* TOC */
+
+div.contents {
+    border: none;
+}
+
+#table-of-contents {
+    margin-left: 20px;
+    padding: 0 0 1em;
+    width: 200px;
+    float: right;
+    clear: right;
+    background: url(../img/blue_bottom.png) no-repeat bottom left;
+    border-right: solid 1px #A1C5D6;
+}
+
+#table-of-contents p {
+    font-family: Georgia, "Times New Roman", serif;
+    background: #A1C5D6 url(../img/blue_top.png) no-repeat top left;
+    color: #AD370A;
+    padding: 0.5em;
+    margin: 0;
+}
+
+#table-of-contents li {
+    margin: 0 0.5em 0 0.5em;
+}
+
+#table-of-contents ul {
+    margin: 0;
+    padding: 0 0 0 0.8em;
+    list-style: none;
+    text-align: left;
+    line-height: 1.5em;
+}
+
+#table-of-contents ul ul {
+    background: url(../img/dotline.gif) repeat-y;
+}
+
+#table-of-contents a.reference {
+    border: none;
+    font: 0.88em Tahoma;
+    font-weight: bold;
+    color: #000050;
+    margin-right: 1em;
+    background: url(../img/minus.gif) no-repeat left 50%;
+    padding-left: 15px;
+}
+
+#table-of-contents li li a.reference {
+    font-weight: normal;
+    background: none;
+    padding: 0;
+}
+
+#table-of-contents a.reference:hover {text-decoration: underline;}
+
+dd p {
+    font-size: 100%;
+}
+
+dd pre {
+    font-size: 108.7%;
+}
+
+li p, li li { font-size: 100%; }
+
+/* IE Hacks */
+
+/* Hides from IE-mac \*/
+* html li pre { height: 1%; }
+* html .topic pre { height: 1%; }
+* html #table-of-contents ul ul { height: 1%; }
+/* End hide from IE-mac */
+
index 9fc373870797360546a70169f38a47683bc42d07..b3348b68ec5ecfc806d31247f87f3b6b5f60d3c0 100644 (file)
@@ -7,17 +7,6 @@
 <title>libtorrent hacking</title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index cb033c694648d0c45b1ff643ffa18d258eeaf77f..149863be7cc4a8af95b9359e0a2dda482248616e 100644 (file)
@@ -92,7 +92,7 @@ libtorrent
 .. _go: https://github.com/steeve/libtorrent-go
 .. _node: https://github.com/fanatid/node-libtorrent
 
-.. _`Introduction, slides`: bittorrent.pdf
+.. _`Introduction, slides`: http://www.rasterbar.com/products/libtorrent/bittorrent.pdf
 
 libtorrent is a feature complete C++ bittorrent implementation focusing
 on efficiency and scalability. It runs on embedded devices as well as
@@ -124,11 +124,6 @@ See the contribute_ page for other ways to help out.
 
 .. raw:: html
 
-       <span style="display:inline-block">
-       <a class="FlattrButton" style="display:none;" href="http://libtorrent.org"></a>
-       <noscript><a href="https://flattr.com/thing/95662/libtorrent" target="_blank">
-       <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></noscript>
-       </span>
        
        <span style="display:inline-block">
        <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
diff --git a/docs/makefile b/docs/makefile
new file mode 100644 (file)
index 0000000..f2e54de
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/make -f
+# Upstream Author: Arvid Norberg - Modified by: Cristian Greco
+# This file has been downloaded from upstream svn and simplified in order to
+# generate an html documentation suitable for offline browsing.
+# This makefile assumes that you have python-docutils installed.
+
+TARGETS = \
+    index \
+       udp_tracker_protocol \
+       dht_rss \
+       dht_store \
+       client_test \
+       building \
+       features \
+       troubleshooting \
+       contributing\
+       examples \
+       extension_protocol \
+       dht_extensions \
+       dht_sec \
+       python_binding \
+       projects \
+       utp \
+       tuning \
+       streaming \
+       manual-ref
+
+all: $(TARGETS:=_rst2html)
+
+%_rst2html: %.rst
+       rst2html --template=template.txt --stylesheet-path=style.css --link-stylesheet --no-toc-backlinks $? > $*.html
+
+clean:
+       @rm -f $(TARGETS:=.html)
index 5d9aea352c95768fd4ad2ecadd93dd0e46133f90..c0ee463a77cf727d4428bd5bec9746465bef78d2 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index 278f5e3a23a5b5a4a48fdf34e52ec54be7ba3ec2..daf77649eefb5a186660b33e58be660bc43c05ec 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index f46d745e5ae7c0b7de9ecdfc23cc81933ca2879d..d1ef8ddca372047f5f15fc56cb51b6aca6851054 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index dab87a2ee22531256e025f8f2e6c1a56b17f2204..0e6433668a8382d677583a0e5fa2c511e32d0cb8 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index ea86c36e9c62fedc870cdf3a6b75094dcd004d6c..2160582badb73c01712002d1d9b3883b6974f8ee 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index d5125fd6beade1c7924f5f3774f98e0cc6edae61..88916ac5da291b6921fa87bff3a6384fa9867938 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index 75303ddd749c1c9bff1e0a0db73fddc48b63a884..94bde166ed283fdb74e62e6b464931e9e703fdae 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index 77513284a18ace128de236e903c8741969ef4e86..8be276cf962427ce9f9b0595dea62c8fb4dbaf81 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index b36bf856f2bf94afc34010903e9241ca53e756b2..1486d086789f427e940253bde3f64b8a7997b770 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index a0b59669ebc59835b9ef7a17ce56e84a3416faf5..497e35ad40630d0ab770a4486dd52befcd8554a2 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index a76ce210c4d1e3523cbfaddd0e197bd2387e6090..33fc7d424e81430e93ce613d8d16bdf46b1fd0f1 100644 (file)
@@ -7,17 +7,6 @@
 <title></title>
 <meta name="author" content="Arvid Norberg, arvid&#64;libtorrent.org" />
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
index fcca6516ba0953c7a62d12a26bac5662a61076c8..5baed415a408689381d60d869cb1415134fe12f4 100644 (file)
@@ -6,17 +6,6 @@
 <meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
 <title>reference documentation</title>
 <meta name=viewport content="width=device-width, initial-scale=1">
-<script type="text/javascript">
-/* <![CDATA[ */
-    (function() {
-        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
-        s.type = 'text/javascript';
-        s.async = true;
-        s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
-        t.parentNode.insertBefore(s, t);
-    })();
-/* ]]> */
-</script>
 <link rel="stylesheet" href="style.css" type="text/css" />
 <link rel="stylesheet" type="text/css" href="rst.css" />
 <style type="text/css">
diff --git a/docs/template.txt b/docs/template.txt
new file mode 100644 (file)
index 0000000..d3ed539
--- /dev/null
@@ -0,0 +1,29 @@
+%(head_prefix)s
+%(head)s
+<link rel="stylesheet" type="text/css" href="css/base.css" />
+<link rel="stylesheet" type="text/css" href="css/rst.css" />
+%(stylesheet)s
+<style type="text/css">
+/* Hides from IE-mac \*/
+* html pre { height: 1%%; }
+/* End hide from IE-mac */
+</style>
+%(body_prefix)s
+    <div id="container">
+    <div id="headerNav">
+    <ul>
+    <li class="first"><a href="index.html">Home</a></li>
+    <li><a href="http://www.rasterbar.com/products.html">Products</a></li>
+    <li><a href="http://www.rasterbar.com/contact.html">Contact</a></li>
+    </ul>
+    </div>
+    <div id="main">
+%(body_pre_docinfo)s
+%(docinfo)s
+%(body)s
+    </div>
+    <div id="footer">
+    <span>Copyright &copy; 2005 Rasterbar Software.</span>
+    </div>
+    </div>
+%(body_suffix)s