# HG changeset patch # User Shinji KONO # Date 1316786708 -32400 # Node ID 450bcedf4ed4311a4c1cea02346e8e911d80bcfe # Parent b0c6281822f5f06147a2c946808e3312c01c6396 multiple theme diff -r b0c6281822f5 -r 450bcedf4ed4 o2s5.source --- a/o2s5.source Fri Sep 23 15:15:18 2011 +0900 +++ b/o2s5.source Fri Sep 23 23:05:08 2011 +0900 @@ -105,23 +105,38 @@ $title - - - - + + + + - - - - + + + + + + - + + + + diff -r b0c6281822f5 -r 450bcedf4ed4 ui/core/framing.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/framing.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,22 @@ +/* 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: 2em; z-index: 1;} +div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} +.slide {top: 0; width: 92%; padding: 2.5em 4% 4% 1em; z-index: 2; list-style: none;} +div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} +div#controls form {text-align: right; 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 -r b0c6281822f5 -r 450bcedf4ed4 ui/core/math.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/math.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,79 @@ +merror {display:inline;font-size:1em;} +math[display=block] {overflow:auto;} +math { white-space: nowrap } +.maruku-eq-number {float:right} +.blockquotesource {margin-left:1em;} +table.plaintable { + border-collapse:collapse; + margin-left:30px; + border:0; +} +.plaintable td {border:1px solid #000; padding: 3px;} +.plaintable th {padding: 3px;} +.plaintable caption { + font-weight: bold; + font-size:1.1em; + text-align:center; + margin-left:30px; +} +.noborder td, .noborder th {border:0} +body {counter-reset: theorem lemma proposition corollary definition example remark note} +.un_theorem *, .num_theorem *, +.un_lemma *, .num_lemma *, +.un_prop *, .num_prop *, +.un_cor *, .num_cor * {font-style: italic} +span.theorem_label {font-style:normal; font-weight:bold;} +.proof span.theorem_label {font-style:italic;} +.num_theorem .theorem_label:after { + content: " " counter(theorem); counter-increment: theorem;} +.num_lemma .theorem_label:after { + content: " " counter(lemma); counter-increment: lemma;} +.num_prop .theorem_label:after { + content: " " counter(proposition); counter-increment: proposition;} +.num_cor .theorem_label:after { + content: " " counter(corollary); counter-increment: corollary;} +.num_defn .theorem_label:after { + content: " " counter(definition); counter-increment: definition;} +.num_example .theorem_label:after { + content: " " counter(example); counter-increment: example;} +.num_remark .theorem_label:after { + content: " " counter(remark); counter-increment: remark;} +.num_note .theorem_label:after { + content: " " counter(note); counter-increment: note;} + +/* Hack for Mozilla bug 449396 */ +[mathvariant="bold"] * { + font-style: normal; + font-variant: normal; + font-weight: bold; +} +[mathvariant="italic"] * { + font-style: italic; + font-variant: normal; + font-weight: normal; +} +[mathvariant="bold-italic"] * { + font-style: italic; + font-variant: normal; + font-weight: bold; +} +[mathvariant="sans-serif"] * { + font-style: normal; + font-variant: normal; + font-weight: normal; +} +[mathvariant="bold-sans-serif"] * { + font-style: normal; + font-variant: normal; + font-weight: bold; +} +[mathvariant="sans-serif-italic"] * { + font-style: italic; + font-variant: normal; + font-weight: normal; +} +[mathvariant="sans-serif-bold-italic"] * { + font-style: italic; + font-variant: normal; + font-weight: bold; +} \ No newline at end of file diff -r b0c6281822f5 -r 450bcedf4ed4 ui/core/opera.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/opera.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,7 @@ +/* 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 -r b0c6281822f5 -r 450bcedf4ed4 ui/core/outline.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/outline.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,15 @@ +/* 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 -r b0c6281822f5 -r 450bcedf4ed4 ui/core/print.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/print.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,1 @@ +/* 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 -r b0c6281822f5 -r 450bcedf4ed4 ui/core/s5-core.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/s5-core.css Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,9 @@ +/* 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, .notes {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;} diff -r b0c6281822f5 -r 450bcedf4ed4 ui/core/slides.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/core/slides.js Fri Sep 23 23:05:08 2011 +0900 @@ -0,0 +1,856 @@ +// S5 v1.2a2 slides.js -- released into the Public Domain +// Many modifications by Jacques Distler to allow operation as real XHTML. +// +// 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 s5NotesWindow; +var s5NotesWindowLoaded = false; +var previousSlide = 0; +var presentationStart = new Date(); +var slideStart = new Date(); + +var countdown = { + timer: 0, + state: 'pause', + start: new Date(), + end: 0, + remaining: 0 +}; + + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isSa = navigator.userAgent.indexOf('Safari') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className ||!object.getAttribute('class')) return false; + return (object.getAttribute('class').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 || !hasClass(object,className)) 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; // Opera fix (hallvord) + + 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]); + } + if (isSa) { + var option = createElement('option'); + option.setAttribute('value', n); + option.appendChild(document.createTextNode(n + ' : ' + otext) ); + list.appendChild(option); + } else { + list.options[list.length] = new Option(n + ' : ' + otext, n); + } + } +} + +function currentSlide() { + var cs; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + var plink = createElement('a'); + plink.id = 'plink'; + plink.setAttribute('href', ''); + var csHere = createElement('span'); + var csSep = createElement('span'); + var csTotal = createElement('span'); + csHere.id = 'csHere'; + csSep.id = 'csSep'; + csTotal.id = 'csTotal'; + csHere.appendChild(document.createTextNode(this.snum)); + csSep.appendChild(document.createTextNode('/')); + csTotal.appendChild(document.createTextNode(this.smax-1)); + plink.appendChild(csHere); + plink.appendChild(csSep); + plink.appendChild(csTotal); + cs.removeChild(cs.firstChild); + cs.appendChild(plink); + 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'); + if (isOp) { //hallvord + location.hash = nid; + } else { + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + } // /hallvord + jl.selectedIndex = snum; + currentSlide(); + loadNote(); + permaLink(); + number = undef; +} + +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'); + } + loadNote(); +} + +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; + case 78: // n + createNotesWindow(); + 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.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; + if (!e.which || e.which == 1) { + 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