diff --git a/docs/scipy08_tutorial.keynote.tgz b/docs/scipy08_tutorial.keynote.tgz deleted file mode 100644 index bb61d4fb9..000000000 Binary files a/docs/scipy08_tutorial.keynote.tgz and /dev/null differ diff --git a/docs/scipy_tutorial/Scripts/shBrushCSharp.js b/docs/scipy_tutorial/Scripts/shBrushCSharp.js deleted file mode 100644 index 61cd7d803..000000000 --- a/docs/scipy_tutorial/Scripts/shBrushCSharp.js +++ /dev/null @@ -1,31 +0,0 @@ -dp.sh.Brushes.CSharp = function() -{ - var keywords = 'abstract as base bool break byte case catch char checked class const ' + - 'continue decimal default delegate do double else enum event explicit ' + - 'extern false finally fixed float for foreach get goto if implicit in int ' + - 'interface internal is lock long namespace new null object operator out ' + - 'override params private protected public readonly ref return sbyte sealed set ' + - 'short sizeof stackalloc static string struct switch this throw true try ' + - 'typeof uint ulong unchecked unsafe ushort using virtual void while'; - - this.regexList = [ - // There's a slight problem with matching single line comments and figuring out - // a difference between // and ///. Using lookahead and lookbehind solves the - // problem, unfortunately JavaScript doesn't support lookbehind. So I'm at a - // loss how to translate that regular expression to JavaScript compatible one. -// { regex: new RegExp('(?) - | () - | (<)*(\w+)*\s*(\w+)\s*=\s*(".*?"|'.*?'|\w+)(/*>)* - | () - */ - var index = 0; - var match = null; - var regex = null; - - // Match CDATA in the following format - // <\!\[[\w\s]*?\[(.|\s)*?\]\]> - this.GetMatches(new RegExp('<\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\]>', 'gm'), 'cdata'); - - // Match comments - // - this.GetMatches(new RegExp('', 'gm'), 'comments'); - - // Match attributes and their values - // (\w+)\s*=\s*(".*?"|\'.*?\'|\w+)* - regex = new RegExp('([\\w-\.]+)\\s*=\\s*(".*?"|\'.*?\'|\\w+)*', 'gm'); - while((match = regex.exec(this.code)) != null) - { - push(this.matches, new dp.sh.Match(match[1], match.index, 'attribute')); - - // if xml is invalid and attribute has no property value, ignore it - if(match[2] != undefined) - { - push(this.matches, new dp.sh.Match(match[2], match.index + match[0].indexOf(match[2]), 'attribute-value')); - } - } - - // Match opening and closing tag brackets - // - this.GetMatches(new RegExp('', 'gm'), 'tag'); - - // Match tag names - // About...

dp.SyntaxHighlighter

Version: {V}

http://www.dreamprojections.com/SyntaxHighlighter

©2004-2005 Alex Gorbatchev. All right reserved.
"};dp.SyntaxHighlighter=dp.sh;dp.sh.Toolbar.Commands={ExpandSource:{label:"+ expand source",check:function(_1){return _1.collapse;},func:function(_2,_3){_2.parentNode.removeChild(_2);_3.div.className=_3.div.className.replace("collapsed","");}},ViewSource:{label:"view plain",func:function(_4,_5){var _6=_5.originalCode.replace(/"+_6+"");_7.document.close();}},CopyToClipboard:{label:"copy to clipboard",check:function(){return window.clipboardData!=null;},func:function(_8,_9){window.clipboardData.setData("text",_9.originalCode);alert("The code is in your clipboard now");}},PrintSource:{label:"print",func:function(_a,_b){var _c=document.createElement("IFRAME");var _d=null;_c.style.cssText="position:absolute;width:0px;height:0px;left:-500px;top:-500px;";document.body.appendChild(_c);_d=_c.contentWindow.document;dp.sh.Utils.CopyStyles(_d,window.document);_d.write("
"+_b.div.innerHTML+"
");_d.close();_c.contentWindow.focus();_c.contentWindow.print();alert("Printing...");document.body.removeChild(_c);}},About:{label:"?",func:function(_e){var _f=window.open("","_blank","dialog,width=300,height=150,scrollbars=0");var doc=_f.document;dp.sh.Utils.CopyStyles(doc,window.document);doc.write(dp.sh.Strings.AboutDialog.replace("{V}",dp.sh.Version));doc.close();_f.focus();}}};dp.sh.Toolbar.Create=function(_11){var div=document.createElement("DIV");div.className="tools";for(var _13 in dp.sh.Toolbar.Commands){var cmd=dp.sh.Toolbar.Commands[_13];if(cmd.check!=null&&!cmd.check(_11)){continue;}div.innerHTML+=""+cmd.label+"";}return div;};dp.sh.Toolbar.Command=function(_15,_16){var n=_16;while(n!=null&&n.className.indexOf("dp-highlighter")==-1){n=n.parentNode;}if(n!=null){dp.sh.Toolbar.Commands[_15].func(_16,n.highlighter);}};dp.sh.Utils.CopyStyles=function(_18,_19){var _1a=_19.getElementsByTagName("link");for(var i=0;i<_1a.length;i++){if(_1a[i].rel.toLowerCase()=="stylesheet"){_18.write("");}}};dp.sh.RegexLib={MultiLineCComments:new RegExp("/\\*[\\s\\S]*?\\*/","gm"),SingleLineCComments:new RegExp("//.*$","gm"),SingleLinePerlComments:new RegExp("#.*$","gm"),DoubleQuotedString:new RegExp("\"(?:\\.|(\\\\\\\")|[^\\\"\"])*\"","g"),SingleQuotedString:new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'","g")};dp.sh.Match=function(_1c,_1d,css){this.value=_1c;this.index=_1d;this.length=_1c.length;this.css=css;};dp.sh.Highlighter=function(){this.addGutter=true;this.addControls=true;this.collapse=false;this.tabsToSpaces=true;this.wrapColumn=80;this.showColumns=true;};dp.sh.Highlighter.SortCallback=function(m1,m2){if(m1.indexm2.index){return 1;}else{if(m1.lengthm2.length){return 1;}}}}return 0;};dp.sh.Highlighter.prototype.CreateElement=function(_21){var _22=document.createElement(_21);_22.highlighter=this;return _22;};dp.sh.Highlighter.prototype.GetMatches=function(_23,css){var _25=0;var _26=null;while((_26=_23.exec(this.code))!=null){this.matches[this.matches.length]=new dp.sh.Match(_26[0],_26.index,css);}};dp.sh.Highlighter.prototype.AddBit=function(str,css){if(str==null||str.length==0){return;}var _29=this.CreateElement("SPAN");str=str.replace(/&/g,"&");str=str.replace(/ /g," ");str=str.replace(/");if(css!=null){var _2a=new RegExp("
","gi");if(_2a.test(str)){var _2b=str.split(" 
");str="";for(var i=0;i<_2b.length;i++){_29=this.CreateElement("SPAN");_29.className=css;_29.innerHTML=_2b[i];this.div.appendChild(_29);if(i+1<_2b.length){this.div.appendChild(this.CreateElement("BR"));}}}else{_29.className=css;_29.innerHTML=str;this.div.appendChild(_29);}}else{_29.innerHTML=str;this.div.appendChild(_29);}};dp.sh.Highlighter.prototype.IsInside=function(_2d){if(_2d==null||_2d.length==0){return false;}for(var i=0;ic.index)&&(_2d.index/gi,"\n");var _43=_42.split("\n");if(this.addControls==true){this.bar.appendChild(dp.sh.Toolbar.Create(this));}if(this.showColumns){var div=this.CreateElement("div");var _45=this.CreateElement("div");var _46=10;var i=1;while(i<=150){if(i%_46==0){div.innerHTML+=i;i+=(i+"").length;}else{div.innerHTML+="·";i++;}}_45.className="columns";_45.appendChild(div);this.bar.appendChild(_45);}for(var i=0,lineIndex=this.firstLine;i<_43.length-1;i++,lineIndex++){var li=this.CreateElement("LI");var _4a=this.CreateElement("SPAN");li.className=(i%2==0)?"alt":"";_4a.innerHTML=_43[i]+" ";li.appendChild(_4a);this.ol.appendChild(li);}this.div.innerHTML="";};dp.sh.Highlighter.prototype.Highlight=function(_4b){function Trim(str){return str.replace(/^\s*(.*?)[\s\n]*$/g,"$1");}function Chop(str){return str.replace(/\n*$/,"").replace(/^\n*/,"");}function Unindent(str){var _4f=str.split("\n");var _50=new Array();var _51=new RegExp("^\\s*","g");var min=1000;for(var i=0;i<_4f.length&&min>0;i++){if(Trim(_4f[i]).length==0){continue;}var _54=_51.exec(_4f[i]);if(_54!=null&&_54.length>0){min=Math.min(_54[0].length,min);}}if(min>0){for(var i=0;i<_4f.length;i++){_4f[i]=_4f[i].substr(min);}}return _4f.join("\n");}function Copy(_56,_57,_58){return _56.substr(_57,_58-_57);}var pos=0;this.originalCode=_4b;this.code=Chop(Unindent(_4b));this.div=this.CreateElement("DIV");this.bar=this.CreateElement("DIV");this.ol=this.CreateElement("OL");this.matches=new Array();this.div.className="dp-highlighter";this.div.highlighter=this;this.bar.className="bar";this.ol.start=this.firstLine;if(this.CssClass!=null){this.ol.className=this.CssClass;}if(this.collapse){this.div.className+=" collapsed";}if(this.tabsToSpaces==true){this.code=this.ProcessSmartTabs(this.code);}this.ProcessRegexList();if(this.matches.length==0){this.AddBit(this.code,null);this.SwitchToList();this.div.appendChild(this.ol);return;}this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);for(var i=0;iAbout...

dp.SyntaxHighlighter

Version: {V}

http://www.dreamprojections.com/SyntaxHighlighter

©2004-2005 Alex Gorbatchev. All right reserved.
' -}; - -dp.SyntaxHighlighter = dp.sh; - -// -// Toolbar functions -// - -dp.sh.Toolbar.Commands = { - ExpandSource: { - label: '+ expand source', - check: function(highlighter) { return highlighter.collapse; }, - func: function(sender, highlighter) - { - sender.parentNode.removeChild(sender); - highlighter.div.className = highlighter.div.className.replace('collapsed', ''); - } - }, - - // opens a new windows and puts the original unformatted source code inside. - ViewSource: { - label: 'view plain', - func: function(sender, highlighter) - { - var code = highlighter.originalCode.replace(/' + code + ''); - wnd.document.close(); - } - }, - - // copies the original source code in to the clipboard (IE only) - CopyToClipboard: { - label: 'copy to clipboard', - check: function() { return window.clipboardData != null; }, - func: function(sender, highlighter) - { - window.clipboardData.setData('text', highlighter.originalCode); - alert('The code is in your clipboard now'); - } - }, - - // creates an invisible iframe, puts the original source code inside and prints it - PrintSource: { - label: 'print', - func: function(sender, highlighter) - { - var iframe = document.createElement('IFRAME'); - var doc = null; - - // this hides the iframe - iframe.style.cssText = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;'; - - document.body.appendChild(iframe); - doc = iframe.contentWindow.document; - - dp.sh.Utils.CopyStyles(doc, window.document); - doc.write('
' + highlighter.div.innerHTML + '
'); - doc.close(); - - iframe.contentWindow.focus(); - iframe.contentWindow.print(); - - alert('Printing...'); - - document.body.removeChild(iframe); - } - }, - - About: { - label: '?', - func: function(highlighter) - { - var wnd = window.open('', '_blank', 'dialog,width=300,height=150,scrollbars=0'); - var doc = wnd.document; - - dp.sh.Utils.CopyStyles(doc, window.document); - - doc.write(dp.sh.Strings.AboutDialog.replace('{V}', dp.sh.Version)); - doc.close(); - wnd.focus(); - } - } -}; - -// creates a
with all toolbar links -dp.sh.Toolbar.Create = function(highlighter) -{ - var div = document.createElement('DIV'); - - div.className = 'tools'; - - for(var name in dp.sh.Toolbar.Commands) - { - var cmd = dp.sh.Toolbar.Commands[name]; - - if(cmd.check != null && !cmd.check(highlighter)) - continue; - - div.innerHTML += '' + cmd.label + ''; - } - - return div; -} - -// executes toolbar command by name -dp.sh.Toolbar.Command = function(name, sender) -{ - var n = sender; - - while(n != null && n.className.indexOf('dp-highlighter') == -1) - n = n.parentNode; - - if(n != null) - dp.sh.Toolbar.Commands[name].func(sender, n.highlighter); -} - -// copies all from 'target' window to 'dest' -dp.sh.Utils.CopyStyles = function(destDoc, sourceDoc) -{ - var links = sourceDoc.getElementsByTagName('link'); - - for(var i = 0; i < links.length; i++) - if(links[i].rel.toLowerCase() == 'stylesheet') - destDoc.write(''); -} - -// -// Common reusable regular expressions -// -dp.sh.RegexLib = { - MultiLineCComments : new RegExp('/\\*[\\s\\S]*?\\*/', 'gm'), - SingleLineCComments : new RegExp('//.*$', 'gm'), - SingleLinePerlComments : new RegExp('#.*$', 'gm'), - DoubleQuotedString : new RegExp('"(?:\\.|(\\\\\\")|[^\\""])*"','g'), - SingleQuotedString : new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'", 'g') -}; - -// -// Match object -// -dp.sh.Match = function(value, index, css) -{ - this.value = value; - this.index = index; - this.length = value.length; - this.css = css; -} - -// -// Highlighter object -// -dp.sh.Highlighter = function() -{ - this.addGutter = true; - this.addControls = true; - this.collapse = false; - this.tabsToSpaces = true; - this.wrapColumn = 80; - this.showColumns = true; -} - -// static callback for the match sorting -dp.sh.Highlighter.SortCallback = function(m1, m2) -{ - // sort matches by index first - if(m1.index < m2.index) - return -1; - else if(m1.index > m2.index) - return 1; - else - { - // if index is the same, sort by length - if(m1.length < m2.length) - return -1; - else if(m1.length > m2.length) - return 1; - } - return 0; -} - -dp.sh.Highlighter.prototype.CreateElement = function(name) -{ - var result = document.createElement(name); - result.highlighter = this; - return result; -} - -// gets a list of all matches for a given regular expression -dp.sh.Highlighter.prototype.GetMatches = function(regex, css) -{ - var index = 0; - var match = null; - - while((match = regex.exec(this.code)) != null) - this.matches[this.matches.length] = new dp.sh.Match(match[0], match.index, css); -} - -dp.sh.Highlighter.prototype.AddBit = function(str, css) -{ - if(str == null || str.length == 0) - return; - - var span = this.CreateElement('SPAN'); - - str = str.replace(/&/g, '&'); - str = str.replace(/ /g, ' '); - str = str.replace(/'); - - // when adding a piece of code, check to see if it has line breaks in it - // and if it does, wrap individual line breaks with span tags - if(css != null) - { - var regex = new RegExp('
', 'gi'); - - if(regex.test(str)) - { - var lines = str.split(' 
'); - - str = ''; - - for(var i = 0; i < lines.length; i++) - { - span = this.CreateElement('SPAN'); - span.className = css; - span.innerHTML = lines[i]; - - this.div.appendChild(span); - - // don't add a
for the last line - if(i + 1 < lines.length) - this.div.appendChild(this.CreateElement('BR')); - } - } - else - { - span.className = css; - span.innerHTML = str; - this.div.appendChild(span); - } - } - else - { - span.innerHTML = str; - this.div.appendChild(span); - } -} - -// checks if one match is inside any other match -dp.sh.Highlighter.prototype.IsInside = function(match) -{ - if(match == null || match.length == 0) - return false; - - for(var i = 0; i < this.matches.length; i++) - { - var c = this.matches[i]; - - if(c == null) - continue; - - if((match.index > c.index) && (match.index < c.index + c.length)) - return true; - } - - return false; -} - -dp.sh.Highlighter.prototype.ProcessRegexList = function() -{ - for(var i = 0; i < this.regexList.length; i++) - this.GetMatches(this.regexList[i].regex, this.regexList[i].css); -} - -dp.sh.Highlighter.prototype.ProcessSmartTabs = function(code) -{ - var lines = code.split('\n'); - var result = ''; - var tabSize = 4; - var tab = '\t'; - - // This function inserts specified amount of spaces in the string - // where a tab is while removing that given tab. - function InsertSpaces(line, pos, count) - { - var left = line.substr(0, pos); - var right = line.substr(pos + 1, line.length); // pos + 1 will get rid of the tab - var spaces = ''; - - for(var i = 0; i < count; i++) - spaces += ' '; - - return left + spaces + right; - } - - // This function process one line for 'smart tabs' - function ProcessLine(line, tabSize) - { - if(line.indexOf(tab) == -1) - return line; - - var pos = 0; - - while((pos = line.indexOf(tab)) != -1) - { - // This is pretty much all there is to the 'smart tabs' logic. - // Based on the position within the line and size of a tab, - // calculate the amount of spaces we need to insert. - var spaces = tabSize - pos % tabSize; - - line = InsertSpaces(line, pos, spaces); - } - - return line; - } - - // Go through all the lines and do the 'smart tabs' magic. - for(var i = 0; i < lines.length; i++) - result += ProcessLine(lines[i], tabSize) + '\n'; - - return result; -} - -dp.sh.Highlighter.prototype.SwitchToList = function() -{ - // thanks to Lachlan Donald from SitePoint.com for this
tag fix. - var html = this.div.innerHTML.replace(/<(br)\/?>/gi, '\n'); - var lines = html.split('\n'); - - if(this.addControls == true) - this.bar.appendChild(dp.sh.Toolbar.Create(this)); - - // add columns ruler - if(this.showColumns) - { - var div = this.CreateElement('div'); - var columns = this.CreateElement('div'); - var showEvery = 10; - var i = 1; - - while(i <= 150) - { - if(i % showEvery == 0) - { - div.innerHTML += i; - i += (i + '').length; - } - else - { - div.innerHTML += '·'; - i++; - } - } - - columns.className = 'columns'; - columns.appendChild(div); - this.bar.appendChild(columns); - } - - for(var i = 0, lineIndex = this.firstLine; i < lines.length - 1; i++, lineIndex++) - { - var li = this.CreateElement('LI'); - var span = this.CreateElement('SPAN'); - - // uses .line1 and .line2 css styles for alternating lines - li.className = (i % 2 == 0) ? 'alt' : ''; - span.innerHTML = lines[i] + ' '; - - li.appendChild(span); - this.ol.appendChild(li); - } - - this.div.innerHTML = ''; -} - -dp.sh.Highlighter.prototype.Highlight = function(code) -{ - function Trim(str) - { - return str.replace(/^\s*(.*?)[\s\n]*$/g, '$1'); - } - - function Chop(str) - { - return str.replace(/\n*$/, '').replace(/^\n*/, ''); - } - - function Unindent(str) - { - var lines = str.split('\n'); - var indents = new Array(); - var regex = new RegExp('^\\s*', 'g'); - var min = 1000; - - // go through every line and check for common number of indents - for(var i = 0; i < lines.length && min > 0; i++) - { - if(Trim(lines[i]).length == 0) - continue; - - var matches = regex.exec(lines[i]); - - if(matches != null && matches.length > 0) - min = Math.min(matches[0].length, min); - } - - // trim minimum common number of white space from the begining of every line - if(min > 0) - for(var i = 0; i < lines.length; i++) - lines[i] = lines[i].substr(min); - - return lines.join('\n'); - } - - // This function returns a portions of the string from pos1 to pos2 inclusive - function Copy(string, pos1, pos2) - { - return string.substr(pos1, pos2 - pos1); - } - - var pos = 0; - - this.originalCode = code; - this.code = Chop(Unindent(code)); - this.div = this.CreateElement('DIV'); - this.bar = this.CreateElement('DIV'); - this.ol = this.CreateElement('OL'); - this.matches = new Array(); - - this.div.className = 'dp-highlighter'; - this.div.highlighter = this; - - this.bar.className = 'bar'; - - // set the first line - this.ol.start = this.firstLine; - - if(this.CssClass != null) - this.ol.className = this.CssClass; - - if(this.collapse) - this.div.className += ' collapsed'; - - // replace tabs with spaces - if(this.tabsToSpaces == true) - this.code = this.ProcessSmartTabs(this.code); - - this.ProcessRegexList(); - - // if no matches found, add entire code as plain text - if(this.matches.length == 0) - { - this.AddBit(this.code, null); - this.SwitchToList(); - this.div.appendChild(this.ol); - return; - } - - // sort the matches - this.matches = this.matches.sort(dp.sh.Highlighter.SortCallback); - - // The following loop checks to see if any of the matches are inside - // of other matches. This process would get rid of highligted strings - // inside comments, keywords inside strings and so on. - for(var i = 0; i < this.matches.length; i++) - if(this.IsInside(this.matches[i])) - this.matches[i] = null; - - // Finally, go through the final list of matches and pull the all - // together adding everything in between that isn't a match. - for(var i = 0; i < this.matches.length; i++) - { - var match = this.matches[i]; - - if(match == null || match.length == 0) - continue; - - this.AddBit(Copy(this.code, pos, match.index), null); - this.AddBit(match.value, match.css); - - pos = match.index + match.length; - } - - this.AddBit(this.code.substr(pos), null); - - this.SwitchToList(); - this.div.appendChild(this.bar); - this.div.appendChild(this.ol); -} - -dp.sh.Highlighter.prototype.GetKeywords = function(str) -{ - return '\\b' + str.replace(/ /g, '\\b|\\b') + '\\b'; -} - -// highlightes all elements identified by name and gets source code from specified property -dp.sh.HighlightAll = function(name, showGutter /* optional */, showControls /* optional */, collapseAll /* optional */, firstLine /* optional */, showColumns /* optional */) -{ - function FindValue() - { - var a = arguments; - - for(var i = 0; i < a.length; i++) - { - if(a[i] == null) - continue; - - if(typeof(a[i]) == 'string' && a[i] != '') - return a[i] + ''; - - if(typeof(a[i]) == 'object' && a[i].value != '') - return a[i].value + ''; - } - - return null; - } - - function IsOptionSet(value, list) - { - for(var i = 0; i < list.length; i++) - if(list[i] == value) - return true; - - return false; - } - - function GetOptionValue(name, list, defaultValue) - { - var regex = new RegExp('^' + name + '\\[(\\w+)\\]$', 'gi'); - var matches = null; - - for(var i = 0; i < list.length; i++) - if((matches = regex.exec(list[i])) != null) - return matches[1]; - - return defaultValue; - } - - var elements = document.getElementsByName(name); - var highlighter = null; - var registered = new Object(); - var propertyName = 'value'; - - // if no code blocks found, leave - if(elements == null) - return; - - // register all brushes - for(var brush in dp.sh.Brushes) - { - var aliases = dp.sh.Brushes[brush].Aliases; - - if(aliases == null) - continue; - - for(var i = 0; i < aliases.length; i++) - registered[aliases[i]] = brush; - } - - for(var i = 0; i < elements.length; i++) - { - var element = elements[i]; - var options = FindValue( - element.attributes['class'], element.className, - element.attributes['language'], element.language - ); - var language = ''; - - if(options == null) - continue; - - options = options.split(':'); - - language = options[0].toLowerCase(); - - if(registered[language] == null) - continue; - - // instantiate a brush - highlighter = new dp.sh.Brushes[registered[language]](); - - // hide the original element - element.style.display = 'none'; - - highlighter.addGutter = (showGutter == null) ? !IsOptionSet('nogutter', options) : showGutter; - highlighter.addControls = (showControls == null) ? !IsOptionSet('nocontrols', options) : showControls; - highlighter.collapse = (collapseAll == null) ? IsOptionSet('collapse', options) : collapseAll; - highlighter.showColumns = (showColumns == null) ? IsOptionSet('showcolumns', options) : showColumns; - - // first line idea comes from Andrew Collington, thanks! - highlighter.firstLine = (firstLine == null) ? parseInt(GetOptionValue('firstline', options, 1)) : firstLine; - - highlighter.Highlight(element[propertyName]); - - element.parentNode.insertBefore(highlighter.div, element); - } -} diff --git a/docs/scipy_tutorial/SyntaxHighlighter.css b/docs/scipy_tutorial/SyntaxHighlighter.css deleted file mode 100644 index 631e2cf4e..000000000 --- a/docs/scipy_tutorial/SyntaxHighlighter.css +++ /dev/null @@ -1,239 +0,0 @@ -/* Main style for the table */ - -.dp-highlighter -{ - font-family: "Courier New" , Courier, mono; - font-size: 20px; - border: 1px solid #2B91AF; - background-color: #fff; - width: 99%; - overflow: auto; - line-height: 100% !important; - margin: 18px 0px 18px 0px; -} - -.dp-highlighter .bar -{ - padding-left: 45px; -} - -.dp-highlighter ol -{ - margin: 0px 0px 0px 45px; - padding: 0px; - color: #2B91AF; -} - -.dp-highlighter ol li, .dp-highlighter .columns div -{ - border-left: 3px solid #6CE26C; - background-color: #fff; - padding-left: 10px; - line-height: 14px; -} - -.dp-highlighter .columns -{ - color: gray; - overflow: hidden; - width: 100%; -} - -.dp-highlighter .columns div -{ - padding-bottom: 5px; -} - -.dp-highlighter ol li.alt -{ - background-color: #f8f8f8; -} - -.dp-highlighter ol li span -{ - color: Black; -} - -/* Adjust some properties when wollapsed */ - -.dp-highlighter.collapsed ol -{ - margin: 0px; -} - -.dp-highlighter.collapsed ol li -{ - display: none; -} - -.dp-highlighter.collapsed .tools -{ - border-bottom: none; -} - -/* Additional modifications when in print-view */ - -.dp-highlighter.printing -{ - border: none; -} - -.dp-highlighter.printing .tools -{ - display: none !important; - border: 5px solid black; -} - -.dp-highlighter.printing li -{ - display: list-item !important; -} - -/* Styles for the tools */ - -.dp-highlighter .tools -{ - padding: 3px 8px 3px 10px; - border-bottom: 1px solid #2B91AF; - font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; - color: silver; -} - -.dp-highlighter .tools a -{ - font-size: 9px; - color: gray; - text-decoration: none; - margin-right: 10px; -} - -.dp-highlighter .tools a:hover -{ - color: red; - text-decoration: underline; -} - -/* About dialog styles */ - -.dp-about -{ - background-color: #fff; - margin: 0px; -} - -.dp-about table -{ - width: 100%; - height: 100%; - font-size: 11px; - font-family: Tahoma, Verdana, Arial, sans-serif !important; -} - -.dp-about td -{ - padding: 10px; - vertical-align: top; -} - -.dp-about .copy -{ - border-bottom: 1px solid #ACA899; - height: 95%; -} - -.dp-about .title -{ - color: red; - font-weight: bold; -} - -.dp-about .para -{ - margin-bottom: 4px; -} - -.dp-about .footer -{ - background-color: #ECEADB; - border-top: 1px solid #fff; - text-align: right; -} - -.dp-about .close -{ - font-size: 11px; - font-family: Tahoma, Verdana, Arial, sans-serif !important; - background-color: #ECEADB; - width: 60px; - height: 22px; -} - -/* Language specific styles */ - -.dp-c {} -.dp-c .comment { color: green; } -.dp-c .string { color: blue; } -.dp-c .preprocessor { color: gray; } -.dp-c .keyword { color: blue; } -.dp-c .vars { color: #d00; } - -.dp-vb {} -.dp-vb .comment { color: green; } -.dp-vb .string { color: blue; } -.dp-vb .preprocessor { color: gray; } -.dp-vb .keyword { color: blue; } - -.dp-sql {} -.dp-sql .comment { color: green; } -.dp-sql .string { color: red; } -.dp-sql .keyword { color: blue; } -.dp-sql .func { color: #ff1493; } -.dp-sql .op { color: #808080; } - -.dp-xml {} -.dp-xml .cdata { color: #ff1493; } -.dp-xml .comments { color: green; } -.dp-xml .tag { font-weight: bold; color: blue; } -.dp-xml .tag-name { color: black; font-weight: bold; } -.dp-xml .attribute { color: red; } -.dp-xml .attribute-value { color: blue; } - -.dp-delphi {} -.dp-delphi .comment { color: #008200; font-style: italic; } -.dp-delphi .string { color: blue; } -.dp-delphi .number { color: blue; } -.dp-delphi .directive { color: #008284; } -.dp-delphi .keyword { font-weight: bold; color: navy; } -.dp-delphi .vars { color: #000; } - -.dp-py {} -.dp-py .comment { color: green; } -.dp-py .string { color: red; } -.dp-py .docstring { color: green; } -.dp-py .keyword { color: blue; font-weight: bold;} -.dp-py .builtins { color: #ff1493; } -.dp-py .magicmethods { color: #808080; } -.dp-py .exceptions { color: brown; } -.dp-py .types { color: brown; font-style: italic; } -.dp-py .commonlibs { color: #8A2BE2; font-style: italic; } - -.dp-rb {} -.dp-rb .comment { color: #c00; } -.dp-rb .string { color: #f0c; } -.dp-rb .symbol { color: #02b902; } -.dp-rb .keyword { color: #069; } -.dp-rb .variable { color: #6cf; } - -.dp-css {} -.dp-css .comment { color: green; } -.dp-css .string { color: red; } -.dp-css .keyword { color: blue; } -.dp-css .colors { color: darkred; } -.dp-css .vars { color: #d00; } - -.dp-j {} -.dp-j .comment { color: rgb(63,127,95); } -.dp-j .string { color: rgb(42,0,255); } -.dp-j .keyword { color: rgb(127,0,85); font-weight: bold } -.dp-j .annotation { color: #646464; } -.dp-j .number { color: #C00000; } diff --git a/docs/scipy_tutorial/chaco_talk.html b/docs/scipy_tutorial/chaco_talk.html deleted file mode 100644 index 24458e08c..000000000 --- a/docs/scipy_tutorial/chaco_talk.html +++ /dev/null @@ -1,652 +0,0 @@ - - - - - -Data Exploration with Chaco - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - -
- - -
- -
-

Data Exploration with Chaco

-

-

-

-
- - -
-

Structure of today's tutorial

-
    -
  • Overview of Chaco
  • -
  • Basic plots and interactors
  • -
  • Creating simple interactors
  • -
  • Core concepts: data model, layout, interaction model
  • -
  • More complex plots
  • - -
  • Walkthrough of some examples
  • -
-
- -
-

Overview

-

-Chaco is a plot application toolkit for Python. You use it to build -stand-alone plotting applications, or embed it inside any application that needs -to visualize numerical data. -

-

Sample plotting applications: -

    -
  • batch plotting of data (csv -> png)
  • -
  • display for realtime data acquisition
  • -
  • visual plot construction kit
  • -
  • visual editor for tweaking input parameters to simulations
  • -
  • mapping and GIS applications
  • -
-

-
- -
-

Chaco Features

-
    -
  • Different rendering layers, backbuffering
  • -
  • Container model for layout and event dispatch
  • -
  • Modular and extensible architecture
  • -
  • Data model/filtering pipeline
  • -
  • Vector drawing engine
  • -
-
- - - - - - - -
-

A first look

- -
- -
-

tutorial1.py

- -
- - -
-

Creating a window

- -
- -
-

Opening the window

-

Normal python (standalone app)

- -

-

From within IPython

- -

-
- -
-

Fun from within IPython

-We can tweak plot attributes on the fly: - -
- -
-

Fun from within IPython

-We can even write functions to do the tweaking for us! - -
- - -
-

The Joy of Traits

-

-Since all Chaco primitives use traits, we can easily bring up property sheets. -

-
- - -
-

Adding a basic interactor

-

All Chaco components can have tools on them, and any events they receive get forwarded on to -their tools. - - -

-
- - -
-

Adding zoom

-

Because the zoom tool draws a visible "zoom box", we need to add it to the list -of overlays instead of the list of tools. (It will still get events.) - -

-
- - -
-

Coordinating different tools

-PanTool and SimpleZoom both key off the left mouse click/drag. Fortunately, -PanTool is not a "stateful" interaction, and there is a way to tell SimpleZoom -to play nicely with others: - -
- - -
-

Writing our first interactor

-Diagnostic tool to dump out the events we are getting: - -
- - -
-

Looking at data

-We don't really want to know the mouse position; we want to know about -coordinates in data space: - - -
- - - - - -
-

Digging deeper

- - -What does the create_line_plot() actually do? -
    -
  • creates datasources
  • -
  • creates range objects and mappers
  • -
  • creates the plot object
  • -
-
- - - -
-

Datasources

- - -ArrayDataSource is just a subclass of AbstractDataSource which works with -Numeric/numpy arrays. - -
- -
-

Ranges, Mappers, and the Plot

- -
- - - -
-

Two plots

-We can use a container to put two plots on the screen. - -
- - -
-

Connecting the two plots

-We're going to link the X dimension of the two plots. Really, all we have to do to -achieve this is to set the horizontal range on the two plots to be the same. - -
- -
-

Connecting the two plots (cont.)

-We can connect the Y dimension, too. And let's throw in a zoom tool. - -
- - -
-

Linked views, but not connected data

-Adding a line inspector will show the problem. - -
- -
-

Connecting the data

- - -
- - -
-

Why Index-Value instead of X-Y?

-Because you are then immune to a plot's physical layout. - -
- - - - -
-

Examples

-
- -
-

Visual Components

-
    -
  • Renderers
  • -
  • Containers
  • -
  • Tools and tool overlays
  • -
  • Legends, annotations, etc.
  • -
-
- -
-

Visual Components (cont.)

-
    -
  • have bounds, position, padding, border, bgcolor
  • -
  • can be placed inside containers
  • -
  • can be horizontally and vertically resized (or not)
  • -
  • implement draw (and request draw on their underlays and overlays)
  • -
  • implement dispatch (and dispatch to underlays and overlays)
  • -
-
- - -
-

More about Containers

-
    -
  • Layout
  • -
  • Dispatch
  • -
  • Draw order & backbuffering
  • -
-
- - -
-

Walkthrough of interesting examples

-
- - -
-

How to get it

-

http://code.enthought.com/chaco

-

Mailing lists: chaco-users@enthought.com, enthought-dev@enthought.com

-

Get Enthon! http://code.enthought.com/enthon

-
- - -
- - - - - - - - - diff --git a/docs/scipy_tutorial/images/chaco_splash.png b/docs/scipy_tutorial/images/chaco_splash.png deleted file mode 100644 index 4645abe1f..000000000 Binary files a/docs/scipy_tutorial/images/chaco_splash.png and /dev/null differ diff --git a/docs/scipy_tutorial/images/tutorial1.png b/docs/scipy_tutorial/images/tutorial1.png deleted file mode 100644 index 048c499ab..000000000 Binary files a/docs/scipy_tutorial/images/tutorial1.png and /dev/null differ diff --git a/docs/scipy_tutorial/presentation notes.doc b/docs/scipy_tutorial/presentation notes.doc deleted file mode 100644 index 294d84421..000000000 Binary files a/docs/scipy_tutorial/presentation notes.doc and /dev/null differ diff --git a/docs/scipy_tutorial/ui/default/blank.gif b/docs/scipy_tutorial/ui/default/blank.gif deleted file mode 100644 index 75b945d25..000000000 Binary files a/docs/scipy_tutorial/ui/default/blank.gif and /dev/null differ diff --git a/docs/scipy_tutorial/ui/default/bodybg.gif b/docs/scipy_tutorial/ui/default/bodybg.gif deleted file mode 100644 index 5f448a16f..000000000 Binary files a/docs/scipy_tutorial/ui/default/bodybg.gif and /dev/null differ diff --git a/docs/scipy_tutorial/ui/default/framing.css b/docs/scipy_tutorial/ui/default/framing.css deleted file mode 100644 index 14d8509e9..000000000 --- a/docs/scipy_tutorial/ui/default/framing.css +++ /dev/null @@ -1,23 +0,0 @@ -/* The following styles size, place, and layer the slide components. - Edit these if you want to change the overall slide layout. - The commented lines can be uncommented (and modified, if necessary) - to help you with the rearrangement process. */ - -/* target = 1024x768 */ - -div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} -div#header {top: 0; height: 3em; z-index: 1;} -div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} -.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;} -div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} -div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; - margin: 0;} -#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;} -html>body #currentSlide {position: fixed;} - -/* -div#header {background: #FCC;} -div#footer {background: #CCF;} -div#controls {background: #BBD;} -div#currentSlide {background: #FFC;} -*/ diff --git a/docs/scipy_tutorial/ui/default/iepngfix.htc b/docs/scipy_tutorial/ui/default/iepngfix.htc deleted file mode 100644 index bba2db756..000000000 --- a/docs/scipy_tutorial/ui/default/iepngfix.htc +++ /dev/null @@ -1,42 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/scipy_tutorial/ui/default/opera.css b/docs/scipy_tutorial/ui/default/opera.css deleted file mode 100644 index 9e9d2a3c5..000000000 --- a/docs/scipy_tutorial/ui/default/opera.css +++ /dev/null @@ -1,7 +0,0 @@ -/* DO NOT CHANGE THESE unless you really want to break Opera Show */ -.slide { - visibility: visible !important; - position: static !important; - page-break-before: always; -} -#slide0 {page-break-before: avoid;} diff --git a/docs/scipy_tutorial/ui/default/outline.css b/docs/scipy_tutorial/ui/default/outline.css deleted file mode 100644 index 62db519ed..000000000 --- a/docs/scipy_tutorial/ui/default/outline.css +++ /dev/null @@ -1,15 +0,0 @@ -/* don't change this unless you want the layout stuff to show up in the outline view! */ - -.layout div, #footer *, #controlForm * {display: none;} -#footer, #controls, #controlForm, #navLinks, #toggle { - display: block; visibility: visible; margin: 0; padding: 0;} -#toggle {float: right; padding: 0.5em;} -html>body #toggle {position: fixed; top: 0; right: 0;} - -/* making the outline look pretty-ish */ - -#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} -#slide0 h1 {padding-top: 1.5em;} -.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; - border-top: 1px solid #888; border-bottom: 1px solid #AAA;} -#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} diff --git a/docs/scipy_tutorial/ui/default/pretty.css b/docs/scipy_tutorial/ui/default/pretty.css deleted file mode 100644 index 223fb4886..000000000 --- a/docs/scipy_tutorial/ui/default/pretty.css +++ /dev/null @@ -1,96 +0,0 @@ -/* Following are the presentation styles -- edit away! */ - -body {background: #FFF -16px 0 no-repeat; color: #000; font-size: 2em;} -:link, :visited {text-decoration: none; color: #00C;} -#controls :active {color: #88A !important;} -#controls :focus {outline: 1px dotted #227;} -h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} -ul, pre {margin: 0; line-height: 1em;} -html, body {margin: 0; padding: 0;} - -blockquote, q {font-style: italic;} -blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} -blockquote p {margin: 0;} -blockquote i {font-style: normal;} -blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} -blockquote b i {font-style: italic;} - -kbd {font-weight: bold; font-size: 1em;} -sup {font-size: smaller; line-height: 1px;} - -.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} -.slide code.bad, code del {color: red;} -.slide code.old {color: silver;} -.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} -.slide pre code {display: block;} -.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} -.slide li {margin-top: 0.75em; margin-right: 0;} -.slide ul ul {line-height: 1;} -.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} -.slide img.leader {display: block; margin: 0 auto;} - - - -/* Override the default
  • margins for lines that the syntax highlighter - produces. */ -div.dp-highlighter li { margin-top: 0;} - - - -div#header, div#footer {background: #005; color: #AAB; - font-family: Verdana, sans-serif;} -div#header {background: #005 -16px 0 no-repeat; - line-height: 1px;} -div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} -#footer h1, #footer h2 {display: block; padding: 0 1em;} -#footer h2 {font-style: italic;} - -div.long {font-size: 0.75em;} -.slide h1 {position: absolute; top: 0.7em; left: 10px; z-index: 1; - margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; - font: bold 1.2em Verdana, sans-serif; text-transform: capitalize; - color: #DDE; background: #005;} -.slide h3 {font-size: 130%;} -h1 abbr {font-variant: small-caps;} - -div#controls {position: absolute; left: 50%; bottom: 0; - width: 50%; - text-align: right; font: 0.9em Verdana, sans-serif;} -html>body div#controls {position: fixed; padding: 0 0 1em 0; - top: auto;} -div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; - margin: 0; padding: 0;} -#controls #navLinks a {padding: 0; margin: 0 0.5em; - background: #005; border: none; color: #779; - cursor: pointer;} -#controls #navList {height: 1em;} -#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;} - -#currentSlide {text-align: center; font-size: 0.5em; color: #449;} - -/* -#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; - font: bold 2em Helvetica, sans-serif; white-space: normal; - color: #000; background: transparent;} -#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;} -#slide0 h4 {margin-top: 0; font-size: 1em;} -*/ -#slide0 h3 {font-size: 1.5em; font: 0.75em Verdana; - text-align: right; } - -ul.urls {list-style: none; display: inline; margin: 0;} -.urls li {display: inline; margin: 0;} -.note {display: none;} -.external {border-bottom: 1px dotted gray;} -html>body .external {border-bottom: none;} -.external:after {content: " \274F"; font-size: smaller; color: #77B;} - -.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;} -img.incremental {visibility: hidden;} -.slide .current {color: #B02;} - - -/* diagnostics - -li:after {content: " [" attr(class) "]"; color: #F88;} - */ \ No newline at end of file diff --git a/docs/scipy_tutorial/ui/default/print.css b/docs/scipy_tutorial/ui/default/print.css deleted file mode 100644 index e7a71d145..000000000 --- a/docs/scipy_tutorial/ui/default/print.css +++ /dev/null @@ -1 +0,0 @@ -/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file diff --git a/docs/scipy_tutorial/ui/default/s5-core.css b/docs/scipy_tutorial/ui/default/s5-core.css deleted file mode 100644 index 86444e041..000000000 --- a/docs/scipy_tutorial/ui/default/s5-core.css +++ /dev/null @@ -1,9 +0,0 @@ -/* Do not edit or override these styles! The system will likely break if you do. */ - -div#header, div#footer, div#controls, .slide {position: absolute;} -html>body div#header, html>body div#footer, - html>body div#controls, html>body .slide {position: fixed;} -.handout {display: none;} -.layout {display: block;} -.slide, .hideme, .incremental {visibility: hidden;} -#slide0 {visibility: visible;} diff --git a/docs/scipy_tutorial/ui/default/slides.css b/docs/scipy_tutorial/ui/default/slides.css deleted file mode 100644 index 0786d7dbd..000000000 --- a/docs/scipy_tutorial/ui/default/slides.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url(s5-core.css); /* required to make the slide show run at all */ -@import url(framing.css); /* sets basic placement and size of slide components */ -@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file diff --git a/docs/scipy_tutorial/ui/default/slides.js b/docs/scipy_tutorial/ui/default/slides.js deleted file mode 100644 index 5cdb4fb54..000000000 --- a/docs/scipy_tutorial/ui/default/slides.js +++ /dev/null @@ -1,555 +0,0 @@ -// S5 v1.1 slides.js -- released into the Public Domain -// -// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information -// about all the wonderful and talented contributors to this code! - -var undef; -var slideCSS = ''; -var snum = 0; -var smax = 1; -var incpos = 0; -var number = undef; -var s5mode = true; -var defaultView = 'slideshow'; -var controlVis = 'visible'; - -var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; -var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; -var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; - -function hasClass(object, className) { - if (!object.className) return false; - return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); -} - -function hasValue(object, value) { - if (!object) return false; - return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); -} - -function removeClass(object,className) { - if (!object) return; - object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); -} - -function addClass(object,className) { - if (!object || hasClass(object, className)) return; - if (object.className) { - object.className += ' '+className; - } else { - object.className = className; - } -} - -function GetElementsWithClassName(elementName,className) { - var allElements = document.getElementsByTagName(elementName); - var elemColl = new Array(); - for (var i = 0; i< allElements.length; i++) { - if (hasClass(allElements[i], className)) { - elemColl[elemColl.length] = allElements[i]; - } - } - return elemColl; -} - -function isParentOrSelf(element, id) { - if (element == null || element.nodeName=='BODY') return false; - else if (element.id == id) return true; - else return isParentOrSelf(element.parentNode, id); -} - -function nodeValue(node) { - var result = ""; - if (node.nodeType == 1) { - var children = node.childNodes; - for (var i = 0; i < children.length; ++i) { - result += nodeValue(children[i]); - } - } - else if (node.nodeType == 3) { - result = node.nodeValue; - } - return(result); -} - -function slideLabel() { - var slideColl = GetElementsWithClassName('*','slide'); - var list = document.getElementById('jumplist'); - smax = slideColl.length; - for (var n = 0; n < smax; n++) { - var obj = slideColl[n]; - - var did = 'slide' + n.toString(); - obj.setAttribute('id',did); - if (isOp) continue; - - var otext = ''; - var menu = obj.firstChild; - if (!menu) continue; // to cope with empty slides - while (menu && menu.nodeType == 3) { - menu = menu.nextSibling; - } - if (!menu) continue; // to cope with slides with only text nodes - - var menunodes = menu.childNodes; - for (var o = 0; o < menunodes.length; o++) { - otext += nodeValue(menunodes[o]); - } - list.options[list.length] = new Option(n + ' : ' + otext, n); - } -} - -function currentSlide() { - var cs; - if (document.getElementById) { - cs = document.getElementById('currentSlide'); - } else { - cs = document.currentSlide; - } - cs.innerHTML = '' + snum + '<\/span> ' + - '\/<\/span> ' + - '' + (smax-1) + '<\/span>'; - if (snum == 0) { - cs.style.visibility = 'hidden'; - } else { - cs.style.visibility = 'visible'; - } -} - -function go(step) { - if (document.getElementById('slideProj').disabled || step == 0) return; - var jl = document.getElementById('jumplist'); - var cid = 'slide' + snum; - var ce = document.getElementById(cid); - if (incrementals[snum].length > 0) { - for (var i = 0; i < incrementals[snum].length; i++) { - removeClass(incrementals[snum][i], 'current'); - removeClass(incrementals[snum][i], 'incremental'); - } - } - if (step != 'j') { - snum += step; - lmax = smax - 1; - if (snum > lmax) snum = lmax; - if (snum < 0) snum = 0; - } else - snum = parseInt(jl.value); - var nid = 'slide' + snum; - var ne = document.getElementById(nid); - if (!ne) { - ne = document.getElementById('slide0'); - snum = 0; - } - if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} - if (incrementals[snum].length > 0 && incpos == 0) { - for (var i = 0; i < incrementals[snum].length; i++) { - if (hasClass(incrementals[snum][i], 'current')) - incpos = i + 1; - else - addClass(incrementals[snum][i], 'incremental'); - } - } - if (incrementals[snum].length > 0 && incpos > 0) - addClass(incrementals[snum][incpos - 1], 'current'); - ce.style.visibility = 'hidden'; - ne.style.visibility = 'visible'; - jl.selectedIndex = snum; - currentSlide(); - number = 0; -} - -function goTo(target) { - if (target >= smax || target == snum) return; - go(target - snum); -} - -function subgo(step) { - if (step > 0) { - removeClass(incrementals[snum][incpos - 1],'current'); - removeClass(incrementals[snum][incpos], 'incremental'); - addClass(incrementals[snum][incpos],'current'); - incpos++; - } else { - incpos--; - removeClass(incrementals[snum][incpos],'current'); - addClass(incrementals[snum][incpos], 'incremental'); - addClass(incrementals[snum][incpos - 1],'current'); - } -} - -function toggle() { - var slideColl = GetElementsWithClassName('*','slide'); - var slides = document.getElementById('slideProj'); - var outline = document.getElementById('outlineStyle'); - if (!slides.disabled) { - slides.disabled = true; - outline.disabled = false; - s5mode = false; - fontSize('1em'); - for (var n = 0; n < smax; n++) { - var slide = slideColl[n]; - slide.style.visibility = 'visible'; - } - } else { - slides.disabled = false; - outline.disabled = true; - s5mode = true; - fontScale(); - for (var n = 0; n < smax; n++) { - var slide = slideColl[n]; - slide.style.visibility = 'hidden'; - } - slideColl[snum].style.visibility = 'visible'; - } -} - -function showHide(action) { - var obj = GetElementsWithClassName('*','hideme')[0]; - switch (action) { - case 's': obj.style.visibility = 'visible'; break; - case 'h': obj.style.visibility = 'hidden'; break; - case 'k': - if (obj.style.visibility != 'visible') { - obj.style.visibility = 'visible'; - } else { - obj.style.visibility = 'hidden'; - } - break; - } -} - -// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) -function keys(key) { - if (!key) { - key = event; - key.which = key.keyCode; - } - if (key.which == 84) { - toggle(); - return; - } - if (s5mode) { - switch (key.which) { - case 10: // return - case 13: // enter - if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; - if (key.target && isParentOrSelf(key.target, 'controls')) return; - if(number != undef) { - goTo(number); - break; - } - case 32: // spacebar - case 34: // page down - case 39: // rightkey - case 40: // downkey - if(number != undef) { - go(number); - } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { - go(1); - } else { - subgo(1); - } - break; - case 33: // page up - case 37: // leftkey - case 38: // upkey - if(number != undef) { - go(-1 * number); - } else if (!incrementals[snum] || incpos <= 0) { - go(-1); - } else { - subgo(-1); - } - break; - case 36: // home - goTo(0); - break; - case 35: // end - goTo(smax-1); - break; - case 67: // c - showHide('k'); - break; - } - if (key.which < 48 || key.which > 57) { - number = undef; - } else { - if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; - if (key.target && isParentOrSelf(key.target, 'controls')) return; - number = (((number != undef) ? number : 0) * 10) + (key.which - 48); - } - } - return false; -} - -function clicker(e) { - number = undef; - var target; - if (window.event) { - target = window.event.srcElement; - e = window.event; - } else target = e.target; - if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; - - /* if (!e.which || e.which == 1) { */ - if (0) { - if (!incrementals[snum] || incpos >= incrementals[snum].length) { - go(1); - } else { - subgo(1); - } - } -} - -function findSlide(hash) { - var target = null; - var slides = GetElementsWithClassName('*','slide'); - for (var i = 0; i < slides.length; i++) { - var targetSlide = slides[i]; - if ( (targetSlide.name && targetSlide.name == hash) - || (targetSlide.id && targetSlide.id == hash) ) { - target = targetSlide; - break; - } - } - while(target != null && target.nodeName != 'BODY') { - if (hasClass(target, 'slide')) { - return parseInt(target.id.slice(5)); - } - target = target.parentNode; - } - return null; -} - -function slideJump() { - if (window.location.hash == null) return; - var sregex = /^#slide(\d+)$/; - var matches = sregex.exec(window.location.hash); - var dest = null; - if (matches != null) { - dest = parseInt(matches[1]); - } else { - dest = findSlide(window.location.hash.slice(1)); - } - if (dest != null) - go(dest - snum); -} - -function fixLinks() { - var thisUri = window.location.href; - thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); - var aelements = document.getElementsByTagName('A'); - for (var i = 0; i < aelements.length; i++) { - var a = aelements[i].href; - var slideID = a.match('\#slide[0-9]{1,2}'); - if ((slideID) && (slideID[0].slice(0,1) == '#')) { - var dest = findSlide(slideID[0].slice(1)); - if (dest != null) { - if (aelements[i].addEventListener) { - aelements[i].addEventListener("click", new Function("e", - "if (document.getElementById('slideProj').disabled) return;" + - "go("+dest+" - snum); " + - "if (e.preventDefault) e.preventDefault();"), true); - } else if (aelements[i].attachEvent) { - aelements[i].attachEvent("onclick", new Function("", - "if (document.getElementById('slideProj').disabled) return;" + - "go("+dest+" - snum); " + - "event.returnValue = false;")); - } - } - } - } -} - -function externalLinks() { - if (!document.getElementsByTagName) return; - var anchors = document.getElementsByTagName('a'); - for (var i=0; i' + - '