summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/images/logo.svg692
-rw-r--r--content/images/screenshots/calf_equalizer.jpgbin0 -> 122074 bytes
-rw-r--r--content/images/screenshots/calf_monosynth.jpgbin0 -> 122363 bytes
-rw-r--r--content/images/screenshots/calf_multiband_compressor.jpgbin0 -> 171202 bytes
-rw-r--r--content/images/screenshots/calf_organ.jpgbin0 -> 185336 bytes
-rw-r--r--content/images/screenshots/casynth.pngbin0 -> 243090 bytes
-rw-r--r--content/images/screenshots/distrho_easyssp.pngbin0 -> 166899 bytes
-rw-r--r--content/images/screenshots/distrho_obxd.pngbin0 -> 140338 bytes
-rw-r--r--content/images/screenshots/distrho_tal_noisemaker.pngbin0 -> 184281 bytes
-rw-r--r--content/images/screenshots/envfollower.pngbin0 -> 212071 bytes
-rw-r--r--content/images/screenshots/hip2b.pngbin0 -> 118929 bytes
-rw-r--r--content/images/screenshots/mod.pngbin0 -> 387240 bytes
-rw-r--r--content/images/screenshots/powercut.pngbin0 -> 145432 bytes
-rw-r--r--content/images/screenshots/stuck.pngbin0 -> 57833 bytes
-rw-r--r--content/pages/developing.md2
-rw-r--r--content/pages/index.md7
-rw-r--r--extra_plugins/gallery.py184
-rw-r--r--pelicanconf.py22
-rw-r--r--themes/lv2/static/css/main.css116
-rw-r--r--themes/lv2/static/css/slideshow.css38
-rw-r--r--themes/lv2/static/js/slideshow.js40
-rw-r--r--themes/lv2/templates/base.html20
-rw-r--r--themes/lv2/templates/page.html12
23 files changed, 1061 insertions, 72 deletions
diff --git a/content/images/logo.svg b/content/images/logo.svg
new file mode 100644
index 0000000..3383c67
--- /dev/null
+++ b/content/images/logo.svg
@@ -0,0 +1,692 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="75"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="logo.svg"
+ inkscape:export-filename="/home/second/open_source/lv2/lv2_14.png"
+ inkscape:export-xdpi="25.548374"
+ inkscape:export-ydpi="25.548374"
+ version="1.0">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2788"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient2548">
+ <stop
+ style="stop-color:#6989a8;stop-opacity:1;"
+ offset="0"
+ id="stop2550" />
+ <stop
+ style="stop-color:#182836;stop-opacity:1;"
+ offset="1"
+ id="stop2552" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3305">
+ <stop
+ id="stop3307"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop3309"
+ offset="1"
+ style="stop-color:#3a3a3a;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3262">
+ <stop
+ id="stop3264"
+ offset="0"
+ style="stop-color:#3d7bff;stop-opacity:1;" />
+ <stop
+ id="stop3266"
+ offset="1"
+ style="stop-color:#0000a9;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3252">
+ <stop
+ style="stop-color:#ff973d;stop-opacity:1;"
+ offset="0"
+ id="stop3254" />
+ <stop
+ style="stop-color:#e35500;stop-opacity:1;"
+ offset="1"
+ id="stop3256" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3246">
+ <stop
+ style="stop-color:#12ff3e;stop-opacity:1;"
+ offset="0"
+ id="stop3248" />
+ <stop
+ style="stop-color:#00812f;stop-opacity:1;"
+ offset="1"
+ id="stop3250" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3061">
+ <stop
+ id="stop3063"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3065"
+ offset="1"
+ style="stop-color:#dbffe0;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3027">
+ <stop
+ id="stop3029"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3031"
+ offset="1"
+ style="stop-color:#fff8d8;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2933">
+ <stop
+ style="stop-color:none"
+ offset="0"
+ id="stop2935" />
+ <stop
+ style="stop-color:#91a3a4;stop-opacity:1;"
+ offset="1"
+ id="stop2937" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2925">
+ <stop
+ id="stop2927"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop2931"
+ offset="1"
+ style="stop-color:#cbdee4;stop-opacity:1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2796">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2798" />
+ <stop
+ style="stop-color:#d1e2d7;stop-opacity:1;"
+ offset="1"
+ id="stop2800" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2763">
+ <stop
+ style="stop-color:#6c6c6c;stop-opacity:0.32467532;"
+ offset="0"
+ id="stop2765" />
+ <stop
+ style="stop-color:#232323;stop-opacity:0.8831169;"
+ offset="1"
+ id="stop2767" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2925"
+ id="linearGradient2909"
+ gradientUnits="userSpaceOnUse"
+ x1="76.895813"
+ y1="1177.6821"
+ x2="76.895813"
+ y2="1330.9896"
+ gradientTransform="translate(-320,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2925"
+ id="linearGradient2911"
+ gradientUnits="userSpaceOnUse"
+ x1="-36.241272"
+ y1="1256.7371"
+ x2="211.24611"
+ y2="1256.7371"
+ gradientTransform="translate(-320,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient2913"
+ gradientUnits="userSpaceOnUse"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615"
+ gradientTransform="translate(-320,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient2915"
+ gradientUnits="userSpaceOnUse"
+ x1="38.539104"
+ y1="1183.1274"
+ x2="38.539104"
+ y2="1243.2323"
+ gradientTransform="translate(-320,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3305"
+ id="linearGradient3182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.29480612,0,0,0.29480612,110.68416,-144.81253)"
+ x1="76.895813"
+ y1="1177.6821"
+ x2="76.895813"
+ y2="1330.9896" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3194"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(136.2413,-1086.805)"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3252"
+ id="linearGradient3214"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320,-220)"
+ x1="367.19733"
+ y1="1177.6821"
+ x2="367.19733"
+ y2="1335.806" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3252"
+ id="linearGradient3216"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320,-220)"
+ x1="283.75873"
+ y1="1262.5349"
+ x2="535.47559"
+ y2="1262.5349" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3246"
+ id="linearGradient3226"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(640,-220)"
+ x1="367.19733"
+ y1="1177.6821"
+ x2="367.19733"
+ y2="1335.806" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3246"
+ id="linearGradient3228"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(640,-220)"
+ x1="283.75873"
+ y1="1262.5349"
+ x2="535.47559"
+ y2="1262.5349" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3238"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(640,-220)"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3240"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(640,-220)"
+ x1="38.539104"
+ y1="1183.1274"
+ x2="38.539104"
+ y2="1243.2323" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(960,-220)"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3244"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(960,-220)"
+ x1="38.539104"
+ y1="1183.1274"
+ x2="38.539104"
+ y2="1243.2323" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3262"
+ id="linearGradient3289"
+ gradientUnits="userSpaceOnUse"
+ x1="367.19733"
+ y1="1177.6821"
+ x2="367.19733"
+ y2="1335.806"
+ gradientTransform="translate(0,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3262"
+ id="linearGradient3291"
+ gradientUnits="userSpaceOnUse"
+ x1="283.75873"
+ y1="1262.5349"
+ x2="535.47559"
+ y2="1262.5349"
+ gradientTransform="translate(0,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3301"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320,-220)"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient3303"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(320,-220)"
+ x1="38.539104"
+ y1="1183.1274"
+ x2="38.539104"
+ y2="1243.2323" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2933"
+ id="linearGradient2760"
+ gradientUnits="userSpaceOnUse"
+ x1="-240.41422"
+ y1="206.73718"
+ x2="-251.16864"
+ y2="106.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2933"
+ id="linearGradient2762"
+ gradientUnits="userSpaceOnUse"
+ x1="-240.41422"
+ y1="206.73718"
+ x2="-251.16864"
+ y2="106.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2933"
+ id="linearGradient2764"
+ gradientUnits="userSpaceOnUse"
+ x1="-240.41422"
+ y1="206.73718"
+ x2="-251.16864"
+ y2="106.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2790"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2792"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2794"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2814"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2816"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient2818"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3027"
+ id="linearGradient2828"
+ gradientUnits="userSpaceOnUse"
+ x1="-252.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3027"
+ id="linearGradient2830"
+ gradientUnits="userSpaceOnUse"
+ x1="-252.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3027"
+ id="linearGradient2832"
+ gradientUnits="userSpaceOnUse"
+ x1="-252.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3061"
+ id="linearGradient2850"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3061"
+ id="linearGradient2853"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3061"
+ id="linearGradient2855"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2548"
+ id="linearGradient1659"
+ gradientUnits="userSpaceOnUse"
+ x1="367.19733"
+ y1="1177.6821"
+ x2="367.19733"
+ y2="1335.806"
+ gradientTransform="translate(960,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2548"
+ id="linearGradient1661"
+ gradientUnits="userSpaceOnUse"
+ x1="283.75873"
+ y1="1262.5349"
+ x2="535.47559"
+ y2="1262.5349"
+ gradientTransform="translate(960,-220)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient1665"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient1667"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2796"
+ id="linearGradient1669"
+ gradientUnits="userSpaceOnUse"
+ x1="-251.41422"
+ y1="106.73718"
+ x2="-240.16864"
+ y2="206.73718" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient1671"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1280,-220)"
+ x1="-31.464466"
+ y1="1216.3615"
+ x2="214.21875"
+ y2="1216.3615" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2763"
+ id="linearGradient1673"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1280,-220)"
+ x1="38.539104"
+ y1="1183.1274"
+ x2="38.539104"
+ y2="1243.2323" />
+ <filter
+ inkscape:collect="always"
+ id="filter3872"
+ color-interpolation-filters="sRGB">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.8101965"
+ id="feGaussianBlur3874" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="78.727911"
+ inkscape:cy="77.38031"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ inkscape:window-width="2558"
+ inkscape:window-height="1550"
+ inkscape:window-x="0"
+ inkscape:window-y="49"
+ inkscape:grid-points="false"
+ inkscape:grid-bbox="false"
+ showguides="false"
+ inkscape:guide-bbox="true"
+ showborder="false"
+ inkscape:window-maximized="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <sodipodi:guide
+ orientation="vertical"
+ position="-55.553288,-803.36218"
+ id="guide2414" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="211.63206,-803.36218"
+ id="guide2416" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="470.23111,-803.36218"
+ id="guide2418" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="-100,146.63578"
+ id="guide5156" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="-100,-3.5208426"
+ id="guide2790" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="366.0318,-803.36218"
+ id="guide4946" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="-100,221.58912"
+ id="guide2841" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="-100,121.63782"
+ id="guide2914" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="-100,-675.36218"
+ id="guide3181" />
+ <inkscape:grid
+ id="GridFromPre046Settings"
+ type="xygrid"
+ originx="-100px"
+ originy="-803.36218px"
+ spacingx="5px"
+ spacingy="5px"
+ color="#3f3fff"
+ empcolor="#3f3fff"
+ opacity="0.15"
+ empopacity="0.38"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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 />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="logos"
+ transform="translate(-100,-201)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient3182);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.73701531;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect3112"
+ width="73.468636"
+ height="45.874775"
+ x="100.36851"
+ y="202.7439"
+ rx="8.1237192"
+ ry="8.1237192"
+ inkscape:export-filename="/home/second/open_source/lv2/lv2_shaded_black.png"
+ inkscape:export-xdpi="35.282356"
+ inkscape:export-ydpi="35.282356" />
+ <path
+ style="opacity:0.13207547;color:#000000;fill:url(#linearGradient3194);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3872)"
+ d="m 127.74127,92.132568 c -14.76707,0.5576 -26.5,12.654202 -26.5,27.562502 l 0,40.5399 c 25.43862,-15.2623 73.40412,-11.5913 100.06492,0.4839 41.20334,18.6619 98.86951,-8.9236 149.15383,-23.2738 l 0,-17.75 c 0,-15.2661 -12.2964,-27.562502 -27.5625,-27.562502 l -194.09375,0 c -0.3578,0 -0.70809,-0.0134 -1.0625,0 z"
+ id="path3124"
+ sodipodi:nodetypes="cccsccccc"
+ inkscape:export-filename="/home/second/open_source/lv2/lv2_shaded_black.png"
+ inkscape:export-xdpi="35.282356"
+ inkscape:export-ydpi="35.282356"
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.29480612,0,0,-0.29480612,204.2733,275.40945)" />
+ <g
+ style="fill:url(#linearGradient2788);fill-opacity:1;stroke:none;display:inline"
+ id="g2774"
+ transform="matrix(0.29480612,0,0,0.29480612,205.6553,179.47423)"
+ inkscape:export-filename="/home/second/open_source/lv2/lv2_shaded_black.png"
+ inkscape:export-xdpi="35.282356"
+ inkscape:export-ydpi="35.282356">
+ <path
+ sodipodi:nodetypes="ccccccc"
+ id="path2776"
+ d="m -326.41422,106.73718 0,100 76.14035,0 -9.1189,-24.98017 -41.02145,0 0,-75.01983 -26,0 z"
+ style="fill:url(#linearGradient2790);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path2778"
+ d="m -241.48671,206.73718 -36.36457,-100 26.74233,0 27.28153,75.01688 27.25231,-75.01688 26.80557,0 -36.3974,100 -35.31977,0 z"
+ style="fill:url(#linearGradient2792);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="csccccsssccs"
+ id="path2780"
+ d="m -135.65517,120.32569 c 5.0484,8.26504 4.74593,19.89479 -1.76989,27.9249 -9.14486,11.27014 -15.23148,12.55506 -21.71065,18.50935 l 25.91456,0 0,14.97724 -54.26192,0 c 3.37914,-8.8667 5.89828,-13.7574 10.11145,-18.57157 10.71759,-12.24644 31.69619,-20.20549 30.41097,-31.2468 -0.36091,-3.1006 -1.26682,-10.20208 -14.85497,-10.20208 l -5.01557,0 5.43738,-14.97955 c 15.77275,0 21.82231,7.17684 25.73864,13.58851 z"
+ style="fill:url(#linearGradient2794);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+</svg>
diff --git a/content/images/screenshots/calf_equalizer.jpg b/content/images/screenshots/calf_equalizer.jpg
new file mode 100644
index 0000000..64e1b07
--- /dev/null
+++ b/content/images/screenshots/calf_equalizer.jpg
Binary files differ
diff --git a/content/images/screenshots/calf_monosynth.jpg b/content/images/screenshots/calf_monosynth.jpg
new file mode 100644
index 0000000..f137350
--- /dev/null
+++ b/content/images/screenshots/calf_monosynth.jpg
Binary files differ
diff --git a/content/images/screenshots/calf_multiband_compressor.jpg b/content/images/screenshots/calf_multiband_compressor.jpg
new file mode 100644
index 0000000..9e3d2a7
--- /dev/null
+++ b/content/images/screenshots/calf_multiband_compressor.jpg
Binary files differ
diff --git a/content/images/screenshots/calf_organ.jpg b/content/images/screenshots/calf_organ.jpg
new file mode 100644
index 0000000..e5d492c
--- /dev/null
+++ b/content/images/screenshots/calf_organ.jpg
Binary files differ
diff --git a/content/images/screenshots/casynth.png b/content/images/screenshots/casynth.png
new file mode 100644
index 0000000..ce25a99
--- /dev/null
+++ b/content/images/screenshots/casynth.png
Binary files differ
diff --git a/content/images/screenshots/distrho_easyssp.png b/content/images/screenshots/distrho_easyssp.png
new file mode 100644
index 0000000..3363937
--- /dev/null
+++ b/content/images/screenshots/distrho_easyssp.png
Binary files differ
diff --git a/content/images/screenshots/distrho_obxd.png b/content/images/screenshots/distrho_obxd.png
new file mode 100644
index 0000000..b6082bb
--- /dev/null
+++ b/content/images/screenshots/distrho_obxd.png
Binary files differ
diff --git a/content/images/screenshots/distrho_tal_noisemaker.png b/content/images/screenshots/distrho_tal_noisemaker.png
new file mode 100644
index 0000000..f54198d
--- /dev/null
+++ b/content/images/screenshots/distrho_tal_noisemaker.png
Binary files differ
diff --git a/content/images/screenshots/envfollower.png b/content/images/screenshots/envfollower.png
new file mode 100644
index 0000000..8182db3
--- /dev/null
+++ b/content/images/screenshots/envfollower.png
Binary files differ
diff --git a/content/images/screenshots/hip2b.png b/content/images/screenshots/hip2b.png
new file mode 100644
index 0000000..6c4b5d4
--- /dev/null
+++ b/content/images/screenshots/hip2b.png
Binary files differ
diff --git a/content/images/screenshots/mod.png b/content/images/screenshots/mod.png
new file mode 100644
index 0000000..1245e77
--- /dev/null
+++ b/content/images/screenshots/mod.png
Binary files differ
diff --git a/content/images/screenshots/powercut.png b/content/images/screenshots/powercut.png
new file mode 100644
index 0000000..d9715e0
--- /dev/null
+++ b/content/images/screenshots/powercut.png
Binary files differ
diff --git a/content/images/screenshots/stuck.png b/content/images/screenshots/stuck.png
new file mode 100644
index 0000000..3f0e5df
--- /dev/null
+++ b/content/images/screenshots/stuck.png
Binary files differ
diff --git a/content/pages/developing.md b/content/pages/developing.md
index 66c5794..9ebf781 100644
--- a/content/pages/developing.md
+++ b/content/pages/developing.md
@@ -76,6 +76,8 @@ Both LV2 itself and this site are stored in [git](http://lv2plug.in/git):
git clone http://lv2plug.in/git/lv2
git clone http://lv2plug.in/git/lv2site
+There is also an official mirror on [Github](https://github.com/drobilla/lv2).
+
Contributions are most welcome. If you plan to implement something
significant, it is a good idea to discuss it with the community on the mailing
list to be sure you're headed in the right direction. Feel free to get
diff --git a/content/pages/index.md b/content/pages/index.md
index e5f94d1..5968f45 100644
--- a/content/pages/index.md
+++ b/content/pages/index.md
@@ -1,10 +1,11 @@
Title:
save_as: index.html
+Gallery: .
LV2 is a [free](http://www.gnu.org/philosophy/free-sw.html) standard for audio
-plugins, used by hundreds of plugins and other projects. At its core, LV2
-is a simple and stable interface, accompanied by *extensions* which add
-functionality to support the needs of increasingly powerful audio software.
+plugins, used by hundreds of plugins and other projects. At its core, LV2 is a
+simple stable interface, accompanied by *extensions* which add functionality to
+support the needs of increasingly powerful audio software.
* [**Download LV2 1.10.0**](http://lv2plug.in/spec/lv2-1.10.0.tar.bz2)
[(sig)](http://lv2plug.in/spec/lv2-1.10.0.tar.bz2.sig)
diff --git a/extra_plugins/gallery.py b/extra_plugins/gallery.py
new file mode 100644
index 0000000..3c5011d
--- /dev/null
+++ b/extra_plugins/gallery.py
@@ -0,0 +1,184 @@
+import logging, json, os, sys, time, Image
+from pelican import signals
+from PIL import ImageOps
+
+"""
+
+Gallery plugin for Pelican
+==========================
+
+This plugin creates a gallery attribute on content (article.gallery) you want to create. You
+will define named presets which can be referenced in your templates. It will attempt to be smart
+about regenerating photos once they exist.
+
+- Resizes images respective of aspect ratio
+- Allows for multiple presets e.g. -> article.gallery.photos[0]['thumb']
+
+Settings:
+---------
+
+Example configuration:
+
+GALLERY_FOLDER = "galleries"
+GALLERY_SRC_PATH = "%s%s" % (BASE_PATH, "gallery_src")
+GALLERY_OUTPUT_PATH = "%s%s%s" % (BASE_PATH, OUTPUT_PATH, GALLERY_FOLDER)
+GALLERY_REGENERATE_EXISTING = False
+GALLERY_PRESETS = [
+ {"name": "thumb", "actions": [{"type": "fit", "height": 100, "width": 100, "from": (0.5, 0.5) }]},
+ {"name": "slider", "actions": [{"type": "fit", "height": 300, "width": 900, "from": (0.5, 0.5) }]},
+ {"name": "large", "actions": [{"type": "resize", "height": 640, "width": 850, "from": (0.5, 0.5) }]},
+ {"name": "thumb_greyscale",
+ "actions": [
+ {"type": "fit", "height": 100, "width": 100, "from": (0.5, 0.5) },
+ {"type": "greyscale"}
+ ]},
+ ]
+
+# This setting is optional, used for thumbnails in bootstrap
+THUMBNAIL_GALLERY_CLASS = "span2"
+
+Article metadata example:
+-------------------------
+Gallery: <Relative path from GALLERY_SRC_PATH>
+
+{% if article.gallery %}
+ <h3>Gallery</h3>
+ <ul class="thumbnails">
+ {% for photo_set in article.gallery.photos %}
+ <li class="{{THUMBNAIL_GALLERY_CLASS}}">
+ <a href="{{ SITEURL }}/{{ photo_set['large'].src }}" class="thumbnail fancybox-thumbs" rel="article.gallery.galleryName">
+ <img src="{{ SITEURL }}/{{ photo_set['thumb'].src }}" alt="{{ photo_set['thumb'].src }}" />
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+{% endif %}
+
+"""
+
+
+class Photo():
+
+ """ Class to represent a Photo, also handles applying presets to itself"""
+ def __init__(self, gallery, filename, output_path, preset):
+ self.gallery = gallery
+ self.filename = filename
+ self.input_file = "%s%s%s" % (self.gallery.absolute_src_path, os.sep, self.filename)
+ self.output_path = output_path
+ self.output_file = "%s%s%s" % (output_path, os.sep, self.filename)
+ self.preset = preset
+ self.image = None
+ self.width = None
+ self.height = None
+ self.image = Image.open(self.input_file)
+ self.process_image()
+ self.image = Image.open(self.output_file)
+ self.width, self.height = self.image.size
+ self.src = "%s%s%s%s%s%s%s" %(self.gallery.generator.settings["GALLERY_FOLDER"],
+ os.sep,
+ self.gallery.gallery_name,
+ os.sep,
+ self.preset["name"],
+ os.sep,
+ self.filename)
+
+
+ def process_image(self):
+ """Responsible for applying presets to the Image obj"""
+ if not os.path.isfile(self.output_file) or self.gallery.generator.settings["GALLERY_REGENERATE_EXISTING"]:
+
+ # Actions should be processed in order of appearance in actions array
+ for i in range(len(self.preset["actions"])):
+ a = self.preset["actions"][i]
+
+ if a["type"] == "fit":
+ if not "from" in a:
+ a["from"] = (0.5, 0.5) # crop from middle by default
+
+ self.image = ImageOps.fit(self.image, (a["width"], a["height"],), method=Image.ANTIALIAS, centering=a["from"])
+
+ if a["type"] == "greyscale":
+ self.image = ImageOps.grayscale(self.image)
+
+ if a["type"] == "resize":
+ self.image.thumbnail((a["width"], a["height"]), Image.NEAREST)
+
+ # TODO: Write other useful transforms here!
+
+
+ self.image.save(self.output_file, "JPEG")
+
+
+
+class Gallery():
+ """Represents a Gallery, iterate of gallery.photos in your Template"""
+ def __init__(self, generator, metadata):
+ self.generator = generator
+ self.gallery_name = None
+ self.files = []
+ self.photos = []
+ self.absolute_src_path = None
+ self.absolute_output_path = None
+ self.metadata = metadata
+ self.preset_dir = []
+
+ if "gallery" in self.metadata:
+ self.gallery_name = self.metadata["gallery"]
+ self.absolute_src_path = "%s%s%s" % (self.generator.settings["GALLERY_SRC_PATH"],
+ os.sep,
+ self.gallery_name)
+
+ self.absolute_output_path = "%s%s%s" % (self.generator.settings["GALLERY_OUTPUT_PATH"],
+ os.sep,
+ self.gallery_name)
+
+ self.create_preset_folders()
+ self.create_preset_images()
+
+ def create_preset_images(self):
+ """Creates the image assets for each preset and returns a PhotoSet object"""
+ for f in self.get_files_from_data():
+ photoInstances = {}
+ for preset in self.generator.settings["GALLERY_PRESETS"]:
+ preset_dir = "%s%s%s" % (self.absolute_output_path,
+ os.sep,
+ preset["name"])
+ photoInstances[preset["name"]] = Photo(self, f, preset_dir, preset)
+
+ self.photos.append(photoInstances)
+
+ def create_preset_folders(self):
+ """Creates the folder structure for a gallery"""
+
+ if not os.path.exists(self.absolute_output_path):
+ os.makedirs(self.absolute_output_path)
+
+ # Create gallery preset folders for this gallery
+ if "GALLERY_PRESETS" in self.generator.settings:
+ for preset in self.generator.settings["GALLERY_PRESETS"]:
+ preset_dir = "%s%s%s" % (self.absolute_output_path,
+ os.sep,
+ preset["name"])
+ self.preset_dir.append(preset_dir)
+ if not os.path.exists(preset_dir):
+ os.makedirs(preset_dir)
+ else:
+ print "You have no presets defined, please add GALLERY_PRESETS array to settings file, with at least one preset defined, see docs."
+
+ def get_files_from_data(self):
+ print "getting files for %s" % self.absolute_src_path
+ from os import listdir
+ from os.path import isfile, join
+ return [ f for f in listdir(self.absolute_src_path) if isfile(join(self.absolute_src_path,f)) and f != ".DS_Store" ]
+
+
+
+
+def get_galleries(generator, metadata):
+ if "gallery" in metadata.keys():
+ metadata["gallery"] = Gallery(generator, metadata)
+
+def register():
+ #signals.article_generator_init.connect(init_gallery_plugin)
+ #signals.article_generator_context.connect(get_galleries)
+ signals.page_generator_context.connect(get_galleries)
diff --git a/pelicanconf.py b/pelicanconf.py
index e24a3e7..7b4b178 100644
--- a/pelicanconf.py
+++ b/pelicanconf.py
@@ -4,10 +4,10 @@ from __future__ import unicode_literals
AUTHOR = u'David Robillard'
SITENAME = u'LV2'
-SITELOGO = 'images/logo.png'
+SITELOGO = 'images/logo.svg'
SITELOGO_WIDTH = '75'
SITELOGO_HEIGHT = '48'
-SITEURL = ''
+SITEURL = 'http://lv2plug.in'
PATH = 'content'
@@ -54,3 +54,21 @@ DISPLAY_TAGS_ON_SIDEBAR = False
DISPLAY_RECENT_POSTS_ON_SIDEBAR = False
DISPLAY_SERIES_ON_SIDEBAR = False
DISPLAY_CATEGORIES_ON_SIDEBAR = False
+
+PLUGIN_PATHS = ["extra_plugins"]
+PLUGINS = ["gallery"]
+
+GALLERY_FOLDER = "galleries"
+GALLERY_SRC_PATH = "%s%s" % (PATH, "/images/screenshots")
+GALLERY_OUTPUT_PATH = "%s%s" % ("output/", GALLERY_FOLDER)
+GALLERY_REGENERATE_EXISTING = True
+GALLERY_PRESETS = [
+ {"name": "thumb",
+ "actions": [{"type": "fit", "height": 100, "width": 100, "from": (0.5, 0.5)}]},
+ {"name": "slider",
+ "actions" : []},
+ {"name": "large",
+ "actions": [{"type": "resize", "height": 640, "width": 850, "from": (0.5, 0.5)}]},
+ {"name": "thumb_greyscale",
+ "actions": [{"type": "fit", "height": 100, "width": 100, "from": (0.5, 0.5)},
+ {"type": "greyscale"} ]}]
diff --git a/themes/lv2/static/css/main.css b/themes/lv2/static/css/main.css
index ace146d..2031cf9 100644
--- a/themes/lv2/static/css/main.css
+++ b/themes/lv2/static/css/main.css
@@ -1,7 +1,7 @@
/* Page Style */
body {
- font-family: sans-serif;
+ font-family: sans-serif;
font-size: 100%;
background-color: #fff;
color: #000;
@@ -14,7 +14,7 @@ a:link {
}
a:visited {
- text-decoration: none;
+ text-decoration: none;
}
a:link {
@@ -77,7 +77,7 @@ table {
th {
vertical-align: text-top;
- background-color: #F8F8F8;
+ background-color: #F8F8F8;
}
td, th {
@@ -86,115 +86,115 @@ td, th {
}
th {
- font-weight: bold;
- text-align: left;
+ font-weight: bold;
+ text-align: left;
}
time, #sitename {
- color: #c0c0c0;
- font-size: 75%;
- font-variant: small-caps;
+ color: #c0c0c0;
+ font-size: 75%;
+ font-variant: small-caps;
}
img {
- border: none;
+ border: none;
}
blockquote {
- color: #333;
- margin: 0px;
- padding: 0 4em 0 4em;
+ color: #333;
+ margin: 0px;
+ padding: 0 4em 0 4em;
}
p {
- text-indent: 0px;
+ text-indent: 0px;
}
p.caption {
- font-size: 80%;
- margin-top: 0;
+ font-size: 80%;
+ margin-top: 0;
}
ul, ol {
- padding: .25em 0em 0 3em;
+ padding: .25em 0em 0 3em;
}
ul li, ol li {
- padding: 0 0 1em 0;
+ padding: 0 0 1em 0;
}
strong {
- font-weight: bold;
+ font-weight: bold;
}
tt, pre {
- font-family: monospace;
- line-height: 1.2em;
+ font-family: monospace;
+ line-height: 1.2em;
}
pre {
- font-size: 0.8em;
- overflow: auto;
- padding: 0.25em;
- margin: 0.5em;
- line-height: 1.5em;
+ font-size: 0.8em;
+ overflow: auto;
+ padding: 0.25em;
+ margin: 0.5em;
+ line-height: 1.5em;
}
nav {
- background-color: #222;
- background: linear-gradient(to bottom, #444 0%, #000 100%);
- border-bottom: solid 2px #444;
- border-left: solid 2px #444;
- border-right: solid 2px #444;
- border-radius: 0 0 6px 6px;
- color: #EEE;
- margin: 0;
- margin-left: auto;
- margin-right: auto;
- max-width: 60em;
- padding: 0.5em;
+ background-color: #222;
+ background: linear-gradient(to bottom, #444 0%, #000 100%);
+ border-bottom: solid 2px #444;
+ border-left: solid 2px #444;
+ border-right: solid 2px #444;
+ border-radius: 0 0 6px 6px;
+ color: #EEE;
+ margin: 0;
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 60em;
+ padding: 0.5em;
}
nav a, nav a:link, nav a:visited {
- border-bottom: none;
- color: #EEE;
+ border-bottom: none;
+ color: #EEE;
}
nav ul {
- margin: 0;
- padding: 0;
- font-size: large;
- font-weight: bold;
+ margin: 0;
+ padding: 0;
+ font-size: large;
+ font-weight: bold;
}
nav li {
- display: inline;
- margin-right: 1em;
+ display: inline;
+ margin-right: 1em;
}
#logo {
- vertical-align: middle;
+ vertical-align: middle;
}
header a#page-title {
- font-weight: bold;
- font-size: x-large;
- color: black;
+ font-weight: bold;
+ font-size: x-large;
+ color: black;
}
#content {
- padding: 0.5em 2em 2em 2em;
- max-width: 60em;
- margin-left: auto;
- margin-right: auto;
+ padding: 0.5em 2em 2em 2em;
+ max-width: 60em;
+ margin-left: auto;
+ margin-right: auto;
}
.highlight {
- font-family: monospace;
- background-color: black;
- border: solid 1px #eee;
- color: white;
- border-radius: 6px;
+ font-family: monospace;
+ background-color: black;
+ border: solid 1px #eee;
+ color: white;
+ border-radius: 6px;
}
diff --git a/themes/lv2/static/css/slideshow.css b/themes/lv2/static/css/slideshow.css
new file mode 100644
index 0000000..7fe664d
--- /dev/null
+++ b/themes/lv2/static/css/slideshow.css
@@ -0,0 +1,38 @@
+#slideshow {
+ background-color: #000;
+ border: 3px solid #000;
+ border-radius: 6px;
+ display: inline-block;
+ height: 20em;
+ line-height: 20em;
+ margin: 1em;
+ margin-left: auto;
+ margin-right: auto;
+ position: relative;
+ text-align: right;
+ vertical-align: middle;
+ width: 20em;
+}
+
+#slideshow img {
+ left: 0;
+ width: 100%;
+ height: auto;
+ max-height: 100%;
+ opacity: 0;
+ position: absolute;
+ text-align: center;
+ transition-duration: 1s;
+ transition-property: opacity;
+ vertical-align: middle;
+}
+
+#slideshow .fadein {
+ opacity: 1.0;
+ transform-origin: bottom left;
+}
+
+#slideshow .fadeout {
+ opacity: 0.0;
+ transform-origin: bottom left;
+}
diff --git a/themes/lv2/static/js/slideshow.js b/themes/lv2/static/js/slideshow.js
new file mode 100644
index 0000000..d9fb9c5
--- /dev/null
+++ b/themes/lv2/static/js/slideshow.js
@@ -0,0 +1,40 @@
+function getPreviousNode(n) {
+ var p = n.previousSibling;
+ while (p && p.nodeType !== 1) {
+ p = p.previousSibling;
+ }
+ return p;
+}
+
+function startSlideShow() {
+ var slideshow = document.getElementById("slideshow"),
+ imgs = slideshow.getElementsByTagName("img"),
+ n = imgs.length,
+ m = Math.floor((Math.random() * n)),
+ pred = getPreviousNode(slideshow);
+
+ // Shrink width of predecessor so gallery fits beside it
+ if (pred) {
+ pred.style.width = "50%";
+ pred.style.display = "inline-block";
+ }
+
+ // Start transition of initial image
+ imgs[m].className = "fadein";
+ m = (m + 1) % n;
+
+ function tick() {
+ // Fade out the previous image, and fade in the next
+ var prev = (m + n - 1) % n,
+ next = (m + 1) % n;
+
+ imgs[prev].className = "";
+ imgs[m].className = "fadeout";
+ imgs[next].className = "fadein";
+
+ m = (m + 1) % n;
+ }
+ window.setInterval(tick, 4000);
+}
+
+startSlideShow();
diff --git a/themes/lv2/templates/base.html b/themes/lv2/templates/base.html
index db03cfa..00f066d 100644
--- a/themes/lv2/templates/base.html
+++ b/themes/lv2/templates/base.html
@@ -1,17 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
- <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
- <meta charset="utf-8" />
- <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
- <link href="{{ SITEURL }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />
- {% if FEED_RSS %}
- <link href="{{ SITEURL }}/{{ FEED_RSS }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
- {% endif %}
+ {% block head %}
+ <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
+ <meta charset="utf-8" />
+ <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
+ <link href="{{ SITEURL }}/{{ FEED }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} ATOM Feed" />
+ {% if FEED_RSS %}
+ <link href="{{ SITEURL }}/{{ FEED_RSS }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
+ {% endif %}
+ {% endblock %}
</head>
<body>
- {% include 'github.html' %}
+ <!-- {% include 'github.html' %} -->
<nav>
<ul>
<li>
@@ -23,7 +25,7 @@
{% endif %}
</a>
</li>
-
+
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
diff --git a/themes/lv2/templates/page.html b/themes/lv2/templates/page.html
index 33f6aca..762dd27 100644
--- a/themes/lv2/templates/page.html
+++ b/themes/lv2/templates/page.html
@@ -1,4 +1,8 @@
{% extends "base.html" %}
+{% block head %}
+ {{ super() }}
+ <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/slideshow.css" />
+{% endblock %}
{% block title %}
{% if page.title %}
{{ page.title }}
@@ -13,4 +17,12 @@
{% endif %}
</header>
{{ page.content }}
+ {% if page.gallery %}
+ <div id="slideshow">
+ {% for photo_set in page.gallery.photos %}
+ <img src="{{ SITEURL }}/{{ photo_set['slider'].src }}" alt="{{ photo_set['slider'].src }}" />
+ {% endfor %}
+ </div>
+ <script type="text/javascript" src="{{ SITEURL }}/theme/js/slideshow.js"></script>
+ {% endif %}
{% endblock %}