Commits

Janto Dreijer committed 5602dfc

Comments (0)

Files changed (6)

code/static/jquery.acts_as_tree_table.css

-/* ActsAsTreeTable
- * ========================================================================= */
-
-/* Expander
- * ------------------------------------------------------------------------- */
-.acts_as_tree_table tr td .expander {
-	background-image: url(/static/images/bullet_toggle_minus.png);
-	background-position: left center;
-	background-repeat: no-repeat;
-	cursor: pointer;
-	padding: 0;
-	zoom: 1; /* Hack for IE, works in IE7, I refuse to check in IE6 or older */
-}
-
-.acts_as_tree_table tr.collapsed td .expander {
-	background-image: url(/static/images/bullet_toggle_plus.png);
-}
-
-.acts_as_tree_table tr.expanded td .expander {
-	background-image: url(/static/images/bullet_toggle_minus.png);
-}

code/static/jquery.acts_as_tree_table.js

-/*
- * jQuery ActsAsTreeTable plugin 1.2
- * =================================
- *
- * License
- * -------
- *
- * Copyright (c) 2008 Ludo van den Boom
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-(function($) {
-	
-	// The options for this plugin should be available to all functions in this
-	// plugin.
-	var options;
-	
-	// TableTree Plugin: display a tree in a table.
-	//
-	// TODO Look into possibility to add alternating row colors
-	$.fn.acts_as_tree_table = function(opts) {
-		options = $.extend({}, $.fn.acts_as_tree_table.defaults, opts);
-		
-		return this.each(function() {
-			var table = $(this);
-			
-			// Add class to enable styles specific to this plugin.
-			table.addClass("acts_as_tree_table");
-			
-			// Walk through each 'node' that is part of the tree, enabling tree
-			// behavior on parent/branch nodes.
-			table.children("tbody").children("tbody tr").each(function() {
-				var node = $(this);
-				
-				// Every node in the tree that has child nodes is marked as a 'parent',
-				// unless this has already been done manually.
-				if(node.not(".parent") && children_of(node).size() > 0) {
-					node.addClass("parent");
-				}
-				
-				// Make each .parent row collapsable by adding some html to the column
-				// that is displayed as tree.
-				if(node.is(".parent")) {
-					init_parent(node);
-				}
-			});
-		});
-	};
-	
-	// Default options
-	$.fn.acts_as_tree_table.defaults = {
-		expandable: true,
-		default_state: 'expanded',
-		indent: 19,
-		tree_column: 0
-	};
-	
-	// Extend function to jQuery
-	$.fn.collapse = function() {
-  	collapse(this);
-	};
-
-	// Extend function to jQuery
-	$.fn.expand = function() {
-		expand(this);
-	};
-
-	// Extend function to jQuery
-	$.fn.toggleBranch = function() {
-		toggle(this);
-	};
-	
-	// === Private Methods
-	
-	// Select all children of a node.	
-	function children_of(node) {
-		return $("tr.child-of-" + node[0].id);
-	};
-	
-	// Hide all descendants of a node.
-	function collapse(node) {
-		children_of(node).each(function() {
-			var child = $(this);
-
-			// Recursively collapse any descending nodes too
-			collapse(child);
-
-			child.hide();
-		});
-	};
-	
-	// Show all children of a node.
-	function expand(node) {
-		children_of(node).each(function() {
-			var child = $(this);
-			
-			// Recursively expand any descending nodes that are parents which where
-			// expanded before too.
-			if(child.is(".expanded.parent")) {
-				expand(child);
-			}
-			
-			child.show();
-		});
-	};
-
-	// Add stuff to cell that contains stuff to make the tree collapsable.
-	function init_parent(node) {
-		// Select cell in column that should display the tree
-		var cell = $(node.children("td")[options.tree_column]);
-
-		// Calculate left padding
-		var padding = parseInt(cell.css("padding-left")) + options.indent;
-		
-		children_of(node).each(function() {
-			$($(this).children("td")[options.tree_column]).css("padding-left", padding + "px");
-		});
-
-		if(options.expandable) {
-			// Add clickable expander buttons (plus and minus icon thingies)
-			//
-			// Why do I use a z-index on the expander?
-			// Otherwise the expander would not be visible in Safari/Webkit browsers.
-			cell.prepend('<span style="margin-left: -' + options.indent + 'px; padding-left: ' + options.indent + 'px" class="expander"></span>');
-			var expander = $(cell[0].firstChild);
-			expander.click(function() { toggle(node); });
-			
-			// Check for a class set explicitly by the user, otherwise set the default class
-			if( !(node.is(".expanded") || node.is(".collapsed")) ) {
-			  node.addClass(options.default_state);
-			}
-			
-			// Apply the default state
-			if(node.is(".collapsed")) {
-				collapse(node);
-			} else if (node.is(".expanded")) {
-				expand(node);
-			}
-		}
-	};
-	
-	// Toggle a node
-	function toggle(node) {
-		if(node.is(".collapsed")) {
-			node.removeClass("collapsed");
-			node.addClass("expanded");
-			expand(node);
-		}
-		else {
-			node.removeClass("expanded");
-			node.addClass("collapsed");
-			collapse(node);
-		}
-	};
-	
-})(jQuery);

code/static/jquery.corners.js

-/*!
- * jQuery Corners 0.3
- * Copyright (c) 2008 David Turnbull, Steven Wittens
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- */
-
-jQuery.fn.corners = function(options) {
-  var doneClass = 'rounded_by_jQuery_corners'; /* To prevent double rounding */
-  var settings = parseOptions(options);
-  var webkitAvailable = false;
-  try {
-    webkitAvailable = (document.body.style.WebkitBorderRadius !== undefined);
-    /* Google Chrome corners look awful */
-    var versionIndex = navigator.userAgent.indexOf('Chrome');
-    if (versionIndex >= 0) webkitAvailable = false;
-  } catch(err) {}
-  var mozillaAvailable = false;
-  try {
-    mozillaAvailable = (document.body.style.MozBorderRadius !== undefined);
-    /* Firefox 2 corners look worse */
-    var versionIndex = navigator.userAgent.indexOf('Firefox');
-    if (versionIndex >= 0 && parseInt(navigator.userAgent.substring(versionIndex+8)) < 3) mozillaAvailable = false;
-  } catch(err) {}
-  return this.each(function(i,e){
-    $e = jQuery(e);
-    if ($e.hasClass(doneClass)) return;
-    $e.addClass(doneClass);
-    var classScan = /{(.*)}/.exec(e.className);
-    var s = classScan ? parseOptions(classScan[1], settings) : settings;
-    var nodeName = e.nodeName.toLowerCase();
-    if (nodeName=='input') e = changeInput(e);
-    if (webkitAvailable && s.webkit) roundWebkit(e, s);
-    else if(mozillaAvailable && s.mozilla && (s.sizex == s.sizey)) roundMozilla(e, s);
-    else {
-      var bgColor = backgroundColor(e.parentNode);
-      var fgColor = backgroundColor(e);
-      switch (nodeName) {
-        case 'a':
-        case 'input':
-          roundLink(e, s, bgColor, fgColor);
-          break;
-        default:
-          roundDiv(e, s, bgColor, fgColor);
-          break;
-      }
-    }
-  });
-  
-  function roundWebkit(e, s) {
-    var radius = '' + s.sizex + 'px ' + s.sizey + 'px';
-    var $e = jQuery(e);
-    if (s.tl) $e.css('WebkitBorderTopLeftRadius', radius);
-    if (s.tr) $e.css('WebkitBorderTopRightRadius', radius);
-    if (s.bl) $e.css('WebkitBorderBottomLeftRadius', radius);
-    if (s.br) $e.css('WebkitBorderBottomRightRadius', radius);
-  }
-  
-  function roundMozilla(e, s)
-  {  
-    var radius = '' + s.sizex + 'px';
-    var $e = jQuery(e);
-    if (s.tl) $e.css('-moz-border-radius-topleft', radius);
-    if (s.tr) $e.css('-moz-border-radius-topright', radius);
-    if (s.bl) $e.css('-moz-border-radius-bottomleft', radius);
-    if (s.br) $e.css('-moz-border-radius-bottomright', radius);  
-  }
-  
-  function roundLink(e, s, bgColor, fgColor) {
-    var table = tableElement("table");
-    var tbody = tableElement("tbody");
-    table.appendChild(tbody);
-    var tr1 = tableElement("tr");
-    var td1 = tableElement("td", "top");
-    tr1.appendChild(td1);
-    var tr2 = tableElement("tr");
-    var td2 = relocateContent(e, s, tableElement("td"));
-    tr2.appendChild(td2);
-    var tr3 = tableElement("tr");
-    var td3 = tableElement("td", "bottom");
-    tr3.appendChild(td3);
-    if (s.tl||s.tr) {
-      tbody.appendChild(tr1);
-      addCorners(td1, s, bgColor, fgColor, true);
-    }
-    tbody.appendChild(tr2);
-    if (s.bl||s.br) {
-      tbody.appendChild(tr3);
-      addCorners(td3, s, bgColor, fgColor, false);
-    }
-    e.appendChild(table);
-    /* Clicking on $('a>table') in IE will trigger onclick but not the href  */
-    if (jQuery.browser.msie) table.onclick = ieLinkBypass;
-    /* Firefox 2 will render garbage unless we hide the overflow here */
-    e.style.overflow = 'hidden';
-  }
-  
-  function ieLinkBypass() {
-    if (!this.parentNode.onclick) this.parentNode.click();
-  }
-  
-  function changeInput(e) {
-    var a1 = document.createElement("a");
-    a1.id = e.id;
-    a1.className = e.className;
-    if (e.onclick) {
-      a1.href = 'javascript:'
-      a1.onclick = e.onclick;
-    } else {
-      jQuery(e).parent('form').each(function() {a1.href = this.action;});
-      a1.onclick = submitForm;
-    }
-    var a2 = document.createTextNode(e.value);
-    a1.appendChild(a2);
-    e.parentNode.replaceChild(a1, e);
-    return a1;
-  }
-
-  function submitForm() {
-    jQuery(this).parent('form').each(function() {this.submit()});
-    return false;
-  }
-
-  function roundDiv(e, s, bgColor, fgColor) {
-    var div = relocateContent(e, s, document.createElement('div'));
-    e.appendChild(div);
-    if (s.tl||s.tr) addCorners(e, s, bgColor, fgColor, true);
-    if (s.bl||s.br) addCorners(e, s, bgColor, fgColor, false);
-  }
-  
-  function relocateContent(e, s, d) {
-    var $e = jQuery(e);
-    var c;
-    while(c=e.firstChild) d.appendChild(c);
-    if (e.style.height) {
-      var h = parseInt($e.css('height'));
-      d.style.height = h + 'px';
-      h += parseInt($e.css('padding-top')) + parseInt($e.css('padding-bottom'));
-      e.style.height = h + 'px';
-    }
-    if (e.style.width) {
-      var w = parseInt($e.css('width'));
-      d.style.width = w + 'px';
-      w += parseInt($e.css('padding-left')) + parseInt($e.css('padding-right'));
-      e.style.width = w + 'px';
-    }
-    d.style.paddingLeft = $e.css('padding-left');
-    d.style.paddingRight = $e.css('padding-right');
-    if (s.tl||s.tr) {
-      d.style.paddingTop = adjustedPadding(e, s, $e.css('padding-top'), true);
-    } else {
-      d.style.paddingTop = $e.css('padding-top');
-    }
-    if (s.bl||s.br) {
-      d.style.paddingBottom = adjustedPadding(e, s, $e.css('padding-bottom'), false);
-    } else {
-      d.style.paddingBottom = $e.css('padding-bottom');
-    }
-    e.style.padding = 0;
-    return d;
-  }
-  
-  function adjustedPadding(e, s, pad, top) {
-    if (pad.indexOf("px") < 0) {
-      try {
-        //TODO Make this check work otherwise remove it
-        console.error('%s padding not in pixels', (top ? 'top' : 'bottom'), e);
-      }
-      catch(err) {}
-      pad = s.sizey + 'px';
-    }
-    pad = parseInt(pad);
-    if (pad - s.sizey < 0) {
-      try {
-        console.error('%s padding is %ipx for %ipx corner:', (top ? 'top' : 'bottom'), pad, s.sizey, e);
-      }
-      catch(err) {}
-      pad = s.sizey;
-    }
-    return pad - s.sizey + 'px';
-  }
-
-  function tableElement(kind, valign) {
-    var e = document.createElement(kind)
-    e.style.border = 'none';
-    e.style.borderCollapse = 'collapse';
-    e.style.borderSpacing = 0;
-    e.style.padding = 0;
-    e.style.margin = 0;
-    if (valign) e.style.verticalAlign = valign;
-    return e;
-  }
-  
-  function backgroundColor(e) {
-    try {
-      var c = jQuery.css(e, "background-color");
-      if ( c.match(/^(transparent|rgba\(0,\s*0,\s*0,\s*0\))$/i) && e.parentNode )
-         return backgroundColor(e.parentNode);
-      if (c==null)
-        return "#ffffff";
-      if (c.indexOf("rgb") > -1)
-    	  c = rgb2hex(c);
-      if (c.length == 4)
-  	    c = hexShort2hex(c);
-      return c;
-    } catch(err) {
-      return "#ffffff";
-    }
-  }
-  
-  function hexShort2hex(c) {
-    return '#' +
-    c.substring(1,2) +
-    c.substring(1,2) +
-    c.substring(2,3) +
-    c.substring(2,3) +
-    c.substring(3,4) +
-    c.substring(3,4);
-  }
-
-  function rgb2hex(c) {
-  	var x = 255;
-  	var hex = '';
-  	var i;
-  	var regexp=/([0-9]+)[, ]+([0-9]+)[, ]+([0-9]+)/;
-  	var array=regexp.exec(c);
-  	for(i=1;i<4;i++) hex += ('0'+parseInt(array[i]).toString(16)).slice(-2);
-  	return '#'+hex;
-  }
-  
-  function parseOptions(options, settings) {
-    var options = options || '';
-    var s = {sizex:5, sizey:5, tl: false, tr: false, bl: false, br: false, webkit:true, mozilla: true, transparent:false};
-    if (settings) {
-      s.sizex = settings.sizex;
-      s.sizey = settings.sizey;
-      s.webkit = settings.webkit;
-      s.transparent = settings.transparent;
-      s.mozilla = settings.mozilla;
-    }
-    var sizex_set = false;
-    var corner_set = false;
-    jQuery.each(options.split(' '), function(idx, option) {
-      option = option.toLowerCase();
-      var i = parseInt(option);
-      if (i > 0 && option == i + 'px') {
-        s.sizey = i;
-        if (!sizex_set) s.sizex = i;
-        sizex_set = true;
-      } else switch (option) {
-        case 'no-native': s.webkit = s.mozilla = false; break;
-        case 'webkit': s.webkit = true; break;
-        case 'no-webkit': s.webkit = false; break;
-        case 'mozilla': s.mozilla = true; break;
-        case 'no-mozilla': s.mozilla = false; break;
-        case 'anti-alias': s.transparent = false; break;
-        case 'transparent': s.transparent = true; break;
-        case 'top': corner_set = s.tl = s.tr = true; break;
-        case 'right': corner_set = s.tr = s.br = true; break;
-        case 'bottom': corner_set = s.bl = s.br = true; break;
-        case 'left': corner_set = s.tl = s.bl = true; break;
-        case 'top-left': corner_set = s.tl = true; break;
-        case 'top-right': corner_set = s.tr = true; break;
-        case 'bottom-left': corner_set = s.bl = true; break;
-        case 'bottom-right': corner_set = s.br = true; break;
-      }
-    });
-    if (!corner_set) {
-      if (!settings) {
-        s.tl = s.tr = s.bl = s.br = true;
-      } else {
-        s.tl = settings.tl;
-        s.tr = settings.tr;
-        s.bl = settings.bl;
-        s.br = settings.br;
-      }
-    }
-    return s;
-  }
-  
-  function alphaBlend(a, b, alpha) {
-    var ca = Array(
-      parseInt('0x' + a.substring(1, 3)),
-      parseInt('0x' + a.substring(3, 5)),
-      parseInt('0x' + a.substring(5, 7))
-    );
-    var cb = Array(
-      parseInt('0x' + b.substring(1, 3)),
-      parseInt('0x' + b.substring(3, 5)),
-      parseInt('0x' + b.substring(5, 7))
-    );
-    r = '0' + Math.round(ca[0] + (cb[0] - ca[0])*alpha).toString(16);
-    g = '0' + Math.round(ca[1] + (cb[1] - ca[1])*alpha).toString(16);
-    b = '0' + Math.round(ca[2] + (cb[2] - ca[2])*alpha).toString(16);
-    return '#'
-      + r.substring(r.length - 2)
-      + g.substring(g.length - 2)
-      + b.substring(b.length - 2);
-  }
-
-  function addCorners(e, s, bgColor, fgColor, top) {
-    if (s.transparent) addTransparentCorners(e, s, bgColor, top);
-    else addAntiAliasedCorners(e, s, bgColor, fgColor, top);
-  }
-  
-  function addAntiAliasedCorners(e, s, bgColor, fgColor, top) {
-    var i, j;
-    var d = document.createElement("div");
-    d.style.fontSize = '1px';
-    d.style.backgroundColor = bgColor;
-    var lastarc = 0;
-    for (i = 1; i <= s.sizey; i++) {
-      var coverage, arc2, arc3;
-      // Find intersection of arc with bottom of pixel row
-      arc = Math.sqrt(1.0 - Math.pow(1.0 - i / s.sizey, 2)) * s.sizex;
-      // Calculate how many pixels are bg, fg and blended.
-      var n_bg = s.sizex - Math.ceil(arc);
-      var n_fg = Math.floor(lastarc);
-      var n_aa = s.sizex - n_bg - n_fg;
-      // Create pixel row wrapper
-      var x = document.createElement("div");
-      var y = d;
-      x.style.margin = "0px " + n_bg + "px";
-      x.style.height = '1px';
-      x.style.overflow = 'hidden';
-      // Create the pixel divs for a row (at least one)
-      for (j = 1; j <= n_aa; j++) {
-        // Calculate coverage per pixel (approximates arc within the pixel)
-        if (j == 1) {
-          if (j == n_aa) {
-            // Single pixel
-            coverage = ((arc + lastarc) * .5) - n_fg;
-          }
-          else {
-            // First in a run
-            arc2 = Math.sqrt(1.0 - Math.pow(1.0 - (n_bg + 1) / s.sizex, 2)) * s.sizey;
-            coverage = (arc2 - (s.sizey - i)) * (arc - n_fg - n_aa + 1) * .5;
-          }
-        }
-        else if (j == n_aa) {
-          // Last in a run
-          arc2 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j + 1) / s.sizex, 2)) * s.sizey;
-          coverage = 1.0 - (1.0 - (arc2 - (s.sizey - i))) * (1.0 - (lastarc - n_fg)) * .5;
-        }
-        else {
-          // Middle of a run
-          arc3 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j) / s.sizex, 2)) * s.sizey;
-          arc2 = Math.sqrt(1.0 - Math.pow((s.sizex - n_bg - j + 1) / s.sizex, 2)) * s.sizey;
-          coverage = ((arc2 + arc3) * .5) - (s.sizey - i);
-        }
-        
-        addCornerDiv(s, x, y, top, alphaBlend(bgColor, fgColor, coverage));
-        y = x;
-        var x = y.cloneNode(false);
-        x.style.margin = "0px 1px";
-      }
-      addCornerDiv(s, x, y, top, fgColor);
-      lastarc = arc;
-    }
-    if (top)
-      e.insertBefore(d, e.firstChild);
-    else
-      e.appendChild(d);
-  }
-  
-  function addCornerDiv(s, x, y, top, color) {
-    if (top && !s.tl) x.style.marginLeft = 0;
-    if (top && !s.tr) x.style.marginRight = 0;
-    if (!top && !s.bl) x.style.marginLeft = 0;
-    if (!top && !s.br) x.style.marginRight = 0;
-    x.style.backgroundColor = color;
-    if (top)
-      y.appendChild(x);
-    else
-      y.insertBefore(x, y.firstChild);
-  }
-
-  function addTransparentCorners(e, s, bgColor, top) {
-    var d = document.createElement("div");
-    d.style.fontSize = '1px';
-    var strip = document.createElement('div');
-    strip.style.overflow = 'hidden';
-    strip.style.height = '1px';
-    strip.style.borderColor = bgColor;
-    strip.style.borderStyle = 'none solid';
-    var sizex = s.sizex-1;
-    var sizey = s.sizey-1;
-    if (!sizey) sizey = 1; /* hint for 1x1 */
-    for (var i=0; i < s.sizey; i++) {
-      var w = sizex - Math.floor(Math.sqrt(1.0 - Math.pow(1.0 - i / sizey, 2)) * sizex);
-      if (i==2 && s.sizex==6 && s.sizey==6) w = 2; /* hint for 6x6 */
-      var x = strip.cloneNode(false);
-      x.style.borderWidth = '0 '+ w +'px';
-      if (top) x.style.borderWidth = '0 '+(s.tr?w:0)+'px 0 '+(s.tl?w:0)+'px';
-      else x.style.borderWidth = '0 '+(s.br?w:0)+'px 0 '+(s.bl?w:0)+'px';
-      top ? d.appendChild(x) : d.insertBefore(x, d.firstChild);
-    } 
-    if (top)
-      e.insertBefore(d, e.firstChild);
-    else
-      e.appendChild(d);
-  }
-
-
-}

code/static/main.css

-table caption {
-	font-size: .9em;
-	font-weight: bold;
-}
-
-table thead {
-	background: #eeeeee repeat-x top left;
-	font-size: .9em;
-}
-
-table thead tr th {
-	border: 1px solid #cccccc;
-	font-weight: normal;
-	padding: .3em 1.67em .1em 1.67em;
-	text-align: left;
-}
-
-table tbody tr td {
-	padding: .3em 1.5em;
-}
-
-table tbody tr.even {
-	background: #f3f3f3;
-}
-
-table tbody tr.odd {
-	background: #fff;
-}
-
-table span {
-	background-position: center left;
-	background-repeat: no-repeat;
-	padding: .2em 0 .2em 1.5em;
-}
-
-table span.file {
-	background-image: url(/static/images/page_white_text.png);
-}
-
-table span.folder {
-	background-image: url(/static/images/folder.png);
-}
-
-#box {
-	background-color:#eeeeee; 
-	padding:5px;
-	border: 1px solid #cccccc;
-	border-width: 1px 1px;
-}
-
-#menu {
-	
-}
-
-#footer {
-   font-size:75%;
-}

code/static/sphinxdoc.css

     font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
     font-size: 0.95em;
     letter-spacing: 0.01em;
+    background-color: #f0f0f0;
 }
 
 hr {

code/templates.py

 
 <h3>Description</h3>
 <i>fetched from source</i>
-<p>
+<div style="background-color:#f0f0f0; padding:5px" class="rounded">
 %(escaped_description)s
-</p>
+</div>
 
 <h3>Installation</h3>