293 lines
10 KiB
JavaScript
293 lines
10 KiB
JavaScript
function toggle_private() {
|
|
// Search for any private/public links on this page. Store
|
|
// their old text in "cmd," so we will know what action to
|
|
// take; and change their text to the opposite action.
|
|
var cmd = "?";
|
|
var elts = document.getElementsByTagName("a");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "privatelink") {
|
|
cmd = elts[i].innerHTML;
|
|
elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
|
|
"hide private":"show private");
|
|
}
|
|
}
|
|
// Update all DIVs containing private objects.
|
|
var elts = document.getElementsByTagName("div");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "private") {
|
|
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
|
|
}
|
|
else if (elts[i].className == "public") {
|
|
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
|
|
}
|
|
}
|
|
// Update all table rows containing private objects. Note, we
|
|
// use "" instead of "block" becaue IE & firefox disagree on what
|
|
// this should be (block vs table-row), and "" just gives the
|
|
// default for both browsers.
|
|
var elts = document.getElementsByTagName("tr");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "private") {
|
|
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
|
|
}
|
|
}
|
|
// Update all list items containing private objects.
|
|
var elts = document.getElementsByTagName("li");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "private") {
|
|
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
|
|
"none":"");
|
|
}
|
|
}
|
|
// Update all list items containing private objects.
|
|
var elts = document.getElementsByTagName("ul");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "private") {
|
|
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
|
|
}
|
|
}
|
|
// Set a cookie to remember the current option.
|
|
document.cookie = "EpydocPrivate="+cmd;
|
|
}
|
|
function show_private() {
|
|
var elts = document.getElementsByTagName("a");
|
|
for(var i=0; i<elts.length; i++) {
|
|
if (elts[i].className == "privatelink") {
|
|
cmd = elts[i].innerHTML;
|
|
if (cmd && cmd.substr(0,4)=="show")
|
|
toggle_private();
|
|
}
|
|
}
|
|
}
|
|
function getCookie(name) {
|
|
var dc = document.cookie;
|
|
var prefix = name + "=";
|
|
var begin = dc.indexOf("; " + prefix);
|
|
if (begin == -1) {
|
|
begin = dc.indexOf(prefix);
|
|
if (begin != 0) return null;
|
|
} else
|
|
{ begin += 2; }
|
|
var end = document.cookie.indexOf(";", begin);
|
|
if (end == -1)
|
|
{ end = dc.length; }
|
|
return unescape(dc.substring(begin + prefix.length, end));
|
|
}
|
|
function setFrame(url1, url2) {
|
|
parent.frames[1].location.href = url1;
|
|
parent.frames[2].location.href = url2;
|
|
}
|
|
function checkCookie() {
|
|
var cmd=getCookie("EpydocPrivate");
|
|
if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
|
|
toggle_private();
|
|
}
|
|
function toggleCallGraph(id) {
|
|
var elt = document.getElementById(id);
|
|
if (elt.style.display == "none")
|
|
elt.style.display = "block";
|
|
else
|
|
elt.style.display = "none";
|
|
}
|
|
function expand(id) {
|
|
var elt = document.getElementById(id+"-expanded");
|
|
if (elt) elt.style.display = "block";
|
|
var elt = document.getElementById(id+"-expanded-linenums");
|
|
if (elt) elt.style.display = "block";
|
|
var elt = document.getElementById(id+"-collapsed");
|
|
if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
|
|
var elt = document.getElementById(id+"-collapsed-linenums");
|
|
if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
|
|
var elt = document.getElementById(id+"-toggle");
|
|
if (elt) { elt.innerHTML = "-"; }
|
|
}
|
|
|
|
function collapse(id) {
|
|
var elt = document.getElementById(id+"-expanded");
|
|
if (elt) elt.style.display = "none";
|
|
var elt = document.getElementById(id+"-expanded-linenums");
|
|
if (elt) elt.style.display = "none";
|
|
var elt = document.getElementById(id+"-collapsed-linenums");
|
|
if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
|
|
var elt = document.getElementById(id+"-toggle");
|
|
if (elt) { elt.innerHTML = "+"; }
|
|
var elt = document.getElementById(id+"-collapsed");
|
|
if (elt) {
|
|
elt.style.display = "block";
|
|
|
|
var indent = elt.getAttribute("indent");
|
|
var pad = elt.getAttribute("pad");
|
|
var s = "<tt class='py-lineno'>";
|
|
for (var i=0; i<pad.length; i++) { s += " " }
|
|
s += "</tt>";
|
|
s += " <tt class='py-line'>";
|
|
for (var i=0; i<indent.length; i++) { s += " " }
|
|
s += "<a href='#' onclick='expand(\"" + id;
|
|
s += "\");return false'>...</a></tt><br />";
|
|
elt.innerHTML = s;
|
|
}
|
|
}
|
|
|
|
function toggle(id) {
|
|
elt = document.getElementById(id+"-toggle");
|
|
if (elt.innerHTML == "-")
|
|
collapse(id);
|
|
else
|
|
expand(id);
|
|
return false;
|
|
}
|
|
|
|
function highlight(id) {
|
|
var elt = document.getElementById(id+"-def");
|
|
if (elt) elt.className = "py-highlight-hdr";
|
|
var elt = document.getElementById(id+"-expanded");
|
|
if (elt) elt.className = "py-highlight";
|
|
var elt = document.getElementById(id+"-collapsed");
|
|
if (elt) elt.className = "py-highlight";
|
|
}
|
|
|
|
function num_lines(s) {
|
|
var n = 1;
|
|
var pos = s.indexOf("\n");
|
|
while ( pos > 0) {
|
|
n += 1;
|
|
pos = s.indexOf("\n", pos+1);
|
|
}
|
|
return n;
|
|
}
|
|
|
|
// Collapse all blocks that mave more than `min_lines` lines.
|
|
function collapse_all(min_lines) {
|
|
var elts = document.getElementsByTagName("div");
|
|
for (var i=0; i<elts.length; i++) {
|
|
var elt = elts[i];
|
|
var split = elt.id.indexOf("-");
|
|
if (split > 0)
|
|
if (elt.id.substring(split, elt.id.length) == "-expanded")
|
|
if (num_lines(elt.innerHTML) > min_lines)
|
|
collapse(elt.id.substring(0, split));
|
|
}
|
|
}
|
|
|
|
function expandto(href) {
|
|
var start = href.indexOf("#")+1;
|
|
if (start != 0 && start != href.length) {
|
|
if (href.substring(start, href.length) != "-") {
|
|
collapse_all(4);
|
|
pos = href.indexOf(".", start);
|
|
while (pos != -1) {
|
|
var id = href.substring(start, pos);
|
|
expand(id);
|
|
pos = href.indexOf(".", pos+1);
|
|
}
|
|
var id = href.substring(start, href.length);
|
|
expand(id);
|
|
highlight(id);
|
|
}
|
|
}
|
|
}
|
|
|
|
function kill_doclink(id) {
|
|
var parent = document.getElementById(id);
|
|
parent.removeChild(parent.childNodes.item(0));
|
|
}
|
|
function auto_kill_doclink(ev) {
|
|
if (!ev) var ev = window.event;
|
|
if (!this.contains(ev.toElement)) {
|
|
var parent = document.getElementById(this.parentID);
|
|
parent.removeChild(parent.childNodes.item(0));
|
|
}
|
|
}
|
|
|
|
function doclink(id, name, targets_id) {
|
|
var elt = document.getElementById(id);
|
|
|
|
// If we already opened the box, then destroy it.
|
|
// (This case should never occur, but leave it in just in case.)
|
|
if (elt.childNodes.length > 1) {
|
|
elt.removeChild(elt.childNodes.item(0));
|
|
}
|
|
else {
|
|
// The outer box: relative + inline positioning.
|
|
var box1 = document.createElement("div");
|
|
box1.style.position = "relative";
|
|
box1.style.display = "inline";
|
|
box1.style.top = 0;
|
|
box1.style.left = 0;
|
|
|
|
// A shadow for fun
|
|
var shadow = document.createElement("div");
|
|
shadow.style.position = "absolute";
|
|
shadow.style.left = "-1.3em";
|
|
shadow.style.top = "-1.3em";
|
|
shadow.style.background = "#404040";
|
|
|
|
// The inner box: absolute positioning.
|
|
var box2 = document.createElement("div");
|
|
box2.style.position = "relative";
|
|
box2.style.border = "1px solid #a0a0a0";
|
|
box2.style.left = "-.2em";
|
|
box2.style.top = "-.2em";
|
|
box2.style.background = "white";
|
|
box2.style.padding = ".3em .4em .3em .4em";
|
|
box2.style.fontStyle = "normal";
|
|
box2.onmouseout=auto_kill_doclink;
|
|
box2.parentID = id;
|
|
|
|
// Get the targets
|
|
var targets_elt = document.getElementById(targets_id);
|
|
var targets = targets_elt.getAttribute("targets");
|
|
var links = "";
|
|
target_list = targets.split(",");
|
|
for (var i=0; i<target_list.length; i++) {
|
|
var target = target_list[i].split("=");
|
|
links += "<li><a href='" + target[1] +
|
|
"' style='text-decoration:none'>" +
|
|
target[0] + "</a></li>";
|
|
}
|
|
|
|
// Put it all together.
|
|
elt.insertBefore(box1, elt.childNodes.item(0));
|
|
//box1.appendChild(box2);
|
|
box1.appendChild(shadow);
|
|
shadow.appendChild(box2);
|
|
box2.innerHTML =
|
|
"Which <b>"+name+"</b> do you want to see documentation for?" +
|
|
"<ul style='margin-bottom: 0;'>" +
|
|
links +
|
|
"<li><a href='#' style='text-decoration:none' " +
|
|
"onclick='kill_doclink(\""+id+"\");return false;'>"+
|
|
"<i>None of the above</i></a></li></ul>";
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function get_anchor() {
|
|
var href = location.href;
|
|
var start = href.indexOf("#")+1;
|
|
if ((start != 0) && (start != href.length))
|
|
return href.substring(start, href.length);
|
|
}
|
|
function redirect_url(dottedName) {
|
|
// Scan through each element of the "pages" list, and check
|
|
// if "name" matches with any of them.
|
|
for (var i=0; i<pages.length; i++) {
|
|
|
|
// Each page has the form "<pagename>-m" or "<pagename>-c";
|
|
// extract the <pagename> portion & compare it to dottedName.
|
|
var pagename = pages[i].substring(0, pages[i].length-2);
|
|
if (pagename == dottedName.substring(0,pagename.length)) {
|
|
|
|
// We've found a page that matches `dottedName`;
|
|
// construct its URL, using leftover `dottedName`
|
|
// content to form an anchor.
|
|
var pagetype = pages[i].charAt(pages[i].length-1);
|
|
var url = pagename + ((pagetype=="m")?"-module.html":
|
|
"-class.html");
|
|
if (dottedName.length > pagename.length)
|
|
url += "#" + dottedName.substring(pagename.length+1,
|
|
dottedName.length);
|
|
return url;
|
|
}
|
|
}
|
|
}
|