first import book
61
book/common/ext/codelens/v3/css/basic.css
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* SimpleModal Basic Modal Dialog
|
||||
* http://www.ericmmartin.com/projects/simplemodal/
|
||||
* http://code.google.com/p/simplemodal/
|
||||
*
|
||||
* Copyright (c) 2010 Eric Martin - http://ericmmartin.com
|
||||
*
|
||||
* Licensed under the MIT license:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Revision: $Id: basic.css 257 2010-07-27 23:06:56Z emartin24 $
|
||||
*/
|
||||
|
||||
.basic-modal-content {display:none;}
|
||||
|
||||
/* Overlay */
|
||||
#simplemodal-overlay {background-color:#000; cursor:wait;}
|
||||
|
||||
/* Container */
|
||||
.simplemodal-container {
|
||||
height:200px;
|
||||
width:300px;
|
||||
color:#bbb;
|
||||
background-color:#333;
|
||||
border:4px solid #444;
|
||||
padding:5px;
|
||||
}
|
||||
|
||||
.simplemodal-container .simplemodal-data {padding:8px;}
|
||||
|
||||
.simplemodal-container code {
|
||||
background:#141414;
|
||||
border-left:3px solid #65B43D;
|
||||
color:#bbb;
|
||||
display:block;
|
||||
font-size:12px;
|
||||
margin-bottom:12px;
|
||||
padding:4px 6px 6px;
|
||||
}
|
||||
|
||||
.simplemodal-container a {color:#ddd;}
|
||||
|
||||
.simplemodal-container a.modalCloseImg {
|
||||
background:url(x.png) no-repeat;
|
||||
width:25px;
|
||||
height:29px;
|
||||
display:inline;
|
||||
z-index:3200;
|
||||
position:absolute;
|
||||
top:-15px;
|
||||
right:-16px;
|
||||
cursor:pointer;}
|
||||
|
||||
.simplemodal-container h3 {
|
||||
color:#84b8d9;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.feedbacktext {
|
||||
color:#84b8d9;
|
||||
}
|
||||
173
book/common/ext/codelens/v3/css/codemirror.css
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
.CodeMirror {
|
||||
line-height: 1.2em; /* pgbovine - enables underscore (_) characters to render properly */
|
||||
font-family: monospace;
|
||||
|
||||
/* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */
|
||||
position: relative;
|
||||
/* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
overflow: auto;
|
||||
height: 300px;
|
||||
/* This is needed to prevent an IE[67] bug where the scrolled content
|
||||
is visible outside of the scrolling box. */
|
||||
position: relative;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Vertical scrollbar */
|
||||
.CodeMirror-scrollbar {
|
||||
position: absolute;
|
||||
right: 0; top: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
z-index: 5;
|
||||
}
|
||||
.CodeMirror-scrollbar-inner {
|
||||
/* This needs to have a nonzero width in order for the scrollbar to appear
|
||||
in Firefox and IE9. */
|
||||
width: 1px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-overlap {
|
||||
/* Ensure that the scrollbar appears in Lion, and that it overlaps the content
|
||||
rather than sitting to the right of it. */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
float: none;
|
||||
right: 0;
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-nonoverlap {
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-ie7 {
|
||||
min-width: 18px;
|
||||
}
|
||||
|
||||
.CodeMirror-gutter {
|
||||
position: absolute; left: 0; top: 0;
|
||||
z-index: 10;
|
||||
background-color: #f7f7f7;
|
||||
border-right: 1px solid #eee;
|
||||
min-width: 2em;
|
||||
height: 100%;
|
||||
}
|
||||
.CodeMirror-gutter-text {
|
||||
color: #aaa;
|
||||
text-align: right;
|
||||
padding: .4em .2em .4em .4em;
|
||||
white-space: pre !important;
|
||||
cursor: default;
|
||||
}
|
||||
.CodeMirror-lines {
|
||||
padding: .4em;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.CodeMirror pre {
|
||||
-moz-border-radius: 0;
|
||||
-webkit-border-radius: 0;
|
||||
-o-border-radius: 0;
|
||||
border-radius: 0;
|
||||
border-width: 0; margin: 0; padding: 0; background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
padding: 0; margin: 0;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
white-space: pre-wrap;
|
||||
word-break: normal;
|
||||
}
|
||||
.CodeMirror-wrap .CodeMirror-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror textarea {
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.CodeMirror pre.CodeMirror-cursor {
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
border-left: 1px solid black;
|
||||
border-right: none;
|
||||
width: 0;
|
||||
}
|
||||
.cm-keymap-fat-cursor pre.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
background: rgba(0, 200, 0, .4);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800);
|
||||
}
|
||||
/* Kludge to turn off filter in ie9+, which also accepts rgba */
|
||||
.cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
|
||||
.CodeMirror-focused pre.CodeMirror-cursor {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; }
|
||||
|
||||
.CodeMirror-searching {
|
||||
background: #ffa;
|
||||
background: rgba(255, 255, 0, .4);
|
||||
}
|
||||
|
||||
/* Default theme */
|
||||
|
||||
.cm-s-default span.cm-keyword {color: #708;}
|
||||
.cm-s-default span.cm-atom {color: #219;}
|
||||
.cm-s-default span.cm-number {color: #164;}
|
||||
.cm-s-default span.cm-def {color: #00f;}
|
||||
.cm-s-default span.cm-variable {color: black;}
|
||||
.cm-s-default span.cm-variable-2 {color: #05a;}
|
||||
.cm-s-default span.cm-variable-3 {color: #085;}
|
||||
.cm-s-default span.cm-property {color: black;}
|
||||
.cm-s-default span.cm-operator {color: black;}
|
||||
.cm-s-default span.cm-comment {color: #a50;}
|
||||
.cm-s-default span.cm-string {color: #a11;}
|
||||
.cm-s-default span.cm-string-2 {color: #f50;}
|
||||
.cm-s-default span.cm-meta {color: #555;}
|
||||
.cm-s-default span.cm-error {color: #f00;}
|
||||
.cm-s-default span.cm-qualifier {color: #555;}
|
||||
.cm-s-default span.cm-builtin {color: #30a;}
|
||||
.cm-s-default span.cm-bracket {color: #cc7;}
|
||||
.cm-s-default span.cm-tag {color: #170;}
|
||||
.cm-s-default span.cm-attribute {color: #00c;}
|
||||
.cm-s-default span.cm-header {color: blue;}
|
||||
.cm-s-default span.cm-quote {color: #090;}
|
||||
.cm-s-default span.cm-hr {color: #999;}
|
||||
.cm-s-default span.cm-link {color: #00c;}
|
||||
|
||||
span.cm-header, span.cm-strong {font-weight: bold;}
|
||||
span.cm-em {font-style: italic;}
|
||||
span.cm-emstrong {font-style: italic; font-weight: bold;}
|
||||
span.cm-link {text-decoration: underline;}
|
||||
|
||||
span.cm-invalidchar {color: #f00;}
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
|
||||
@media print {
|
||||
|
||||
/* Hide the cursor when printing */
|
||||
.CodeMirror pre.CodeMirror-cursor {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
}
|
||||
201
book/common/ext/codelens/v3/css/index.css
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
/* CSS accompanying ../index.html */
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
|
||||
font-family: Georgia, Palatino, Times, serif;
|
||||
|
||||
font-size: 12pt;
|
||||
|
||||
/* use fixed width for simplicity */
|
||||
max-width: 900px;
|
||||
min-width: 900px;
|
||||
width: 900px;
|
||||
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* for prose text only */
|
||||
p, li {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: normal;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 8px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.smallH1 {
|
||||
font-size: 14pt;
|
||||
margin-left: -2px;
|
||||
}
|
||||
|
||||
#optLink {
|
||||
font-size: 14pt;
|
||||
text-decoration: none;
|
||||
color: #3D58A2;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#optLink:hover {
|
||||
color: #3D58A2;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.titlePane {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.titlePane h1 {
|
||||
font-size: 22pt;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div.mainBodyPane {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
div.activityPane {
|
||||
/* TOP RIGHT BOTTOM LEFT */
|
||||
padding: 15px 0px /* make right padding ZERO and just right-pad 'p' */ 5px 20px;
|
||||
text-align: left;
|
||||
border: 3px solid #005583;
|
||||
}
|
||||
|
||||
div.activityPane p {
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
div.activityPane h1 {
|
||||
font-size: 22pt;
|
||||
margin-bottom: 20pt;
|
||||
}
|
||||
|
||||
|
||||
ul {
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 12px;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited,
|
||||
a:hover {
|
||||
color: #3D58A2;
|
||||
}
|
||||
|
||||
#learnHeading, #embedHeading, #shareHeading {
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
font-size: 24pt;
|
||||
}
|
||||
|
||||
#learnHeading {
|
||||
color: #062270;
|
||||
}
|
||||
|
||||
div#learnPane {
|
||||
margin-top: 6pt;
|
||||
margin-bottom: 8pt;
|
||||
border: 5px solid #062270;
|
||||
}
|
||||
|
||||
div#learnPane p {
|
||||
padding-right: 100px;
|
||||
}
|
||||
|
||||
div#learnPane #startLink {
|
||||
font-size: 17pt;
|
||||
font-weight: normal;
|
||||
margin-top: 25px;
|
||||
margin-bottom: 20px;
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
}
|
||||
|
||||
div#learnPane #startLink a {
|
||||
border-bottom-style: solid;
|
||||
border-bottom-width: 2px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
tt {
|
||||
/*font-size: 85%;*/
|
||||
}
|
||||
|
||||
div#embedPane {
|
||||
margin-right: 5px;
|
||||
border: 5px solid #5a7973;
|
||||
}
|
||||
|
||||
|
||||
#embedHeading {
|
||||
color: #5a7973;
|
||||
}
|
||||
|
||||
div#sharePane {
|
||||
margin-left: 5px;
|
||||
border: 5px solid #4284d3;
|
||||
}
|
||||
|
||||
#shareHeading {
|
||||
color: #4284d3;
|
||||
}
|
||||
|
||||
div#detailsPane {
|
||||
margin-top: 0px;
|
||||
margin-left: 5px;
|
||||
border: 0px; /* NO BORDER! */
|
||||
}
|
||||
|
||||
#partnershipDiv {
|
||||
/*background-color: #d8e1e3;*/
|
||||
background-color: #d9cdb6;
|
||||
width: 60%;
|
||||
padding: 8px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
|
||||
font-size: 10pt;
|
||||
font-family: Monaco, arial, sans-serif;
|
||||
}
|
||||
|
||||
table.layoutTbl {
|
||||
border: 0px;
|
||||
max-width: 900px;
|
||||
}
|
||||
|
||||
table.layoutTbl td#embedPaneTd {
|
||||
width: 60%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.layoutTbl td#sharePaneTd {
|
||||
width: 40%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
#footer {
|
||||
color: #666666;
|
||||
font-size: 9pt;
|
||||
border-top: 1px solid #bbbbbb;
|
||||
padding-top: 0px;
|
||||
margin-top: 20px;
|
||||
|
||||
/* center align */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
}
|
||||
573
book/common/ext/codelens/v3/css/jquery.qtip.css
Normal file
|
|
@ -0,0 +1,573 @@
|
|||
/*! qTip2 - Pretty powerful tooltips - v2.0.0 - 2012-09-10
|
||||
* http://craigsworks.com/projects/qtip2/
|
||||
* Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */
|
||||
|
||||
/* Fluid class for determining actual width in IE */
|
||||
#qtip-rcontainer{
|
||||
position: absolute;
|
||||
left: -28000px;
|
||||
top: -28000px;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* Fluid class for determining actual width in IE */
|
||||
#qtip-rcontainer .ui-tooltip{
|
||||
display: block !important;
|
||||
visibility: hidden !important;
|
||||
position: static !important;
|
||||
float: left !important;
|
||||
}
|
||||
|
||||
/* Core qTip styles */
|
||||
.ui-tooltip, .qtip{
|
||||
position: absolute;
|
||||
left: -28000px;
|
||||
top: -28000px;
|
||||
display: none;
|
||||
|
||||
max-width: 280px;
|
||||
min-width: 50px;
|
||||
|
||||
font-size: 10.5px;
|
||||
line-height: 12px;
|
||||
}
|
||||
|
||||
.ui-tooltip-content{
|
||||
position: relative;
|
||||
padding: 5px 9px;
|
||||
overflow: hidden;
|
||||
|
||||
text-align: left;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.ui-tooltip-titlebar{
|
||||
position: relative;
|
||||
min-height: 14px;
|
||||
padding: 5px 35px 5px 10px;
|
||||
overflow: hidden;
|
||||
|
||||
border-width: 0 0 1px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.ui-tooltip-titlebar + .ui-tooltip-content{ border-top-width: 0 !important; }
|
||||
|
||||
/* Default close button class */
|
||||
.ui-tooltip-titlebar .ui-state-default{
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
top: 50%;
|
||||
margin-top: -9px;
|
||||
|
||||
cursor: pointer;
|
||||
outline: medium none;
|
||||
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
* html .ui-tooltip-titlebar .ui-state-default{ top: 16px; } /* IE fix */
|
||||
|
||||
.ui-tooltip-titlebar .ui-icon,
|
||||
.ui-tooltip-icon .ui-icon{
|
||||
display: block;
|
||||
text-indent: -1000em;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.ui-tooltip-icon, .ui-tooltip-icon .ui-icon{
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.ui-tooltip-icon .ui-icon{
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
font: normal bold 10px/13px Tahoma,sans-serif;
|
||||
|
||||
color: inherit;
|
||||
background: transparent none no-repeat -100em -100em;
|
||||
}
|
||||
|
||||
|
||||
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
|
||||
.ui-tooltip-focus{}
|
||||
|
||||
/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
|
||||
.ui-tooltip-hover{}
|
||||
|
||||
/* Default tooltip style */
|
||||
.ui-tooltip-default{
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #F1D031;
|
||||
|
||||
background-color: #FFFFA3;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.ui-tooltip-default .ui-tooltip-titlebar{
|
||||
background-color: #FFEF93;
|
||||
}
|
||||
|
||||
.ui-tooltip-default .ui-tooltip-icon{
|
||||
border-color: #CCC;
|
||||
background: #F1F1F1;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #AAA;
|
||||
color: #111;
|
||||
}
|
||||
|
||||
|
||||
/*! Light tooltip style */
|
||||
.ui-tooltip-light{
|
||||
background-color: white;
|
||||
border-color: #E2E2E2;
|
||||
color: #454545;
|
||||
}
|
||||
|
||||
.ui-tooltip-light .ui-tooltip-titlebar{
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
|
||||
/*! Dark tooltip style */
|
||||
.ui-tooltip-dark{
|
||||
background-color: #505050;
|
||||
border-color: #303030;
|
||||
color: #f3f3f3;
|
||||
}
|
||||
|
||||
.ui-tooltip-dark .ui-tooltip-titlebar{
|
||||
background-color: #404040;
|
||||
}
|
||||
|
||||
.ui-tooltip-dark .ui-tooltip-icon{
|
||||
border-color: #444;
|
||||
}
|
||||
|
||||
.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #303030;
|
||||
}
|
||||
|
||||
|
||||
/*! Cream tooltip style */
|
||||
.ui-tooltip-cream{
|
||||
background-color: #FBF7AA;
|
||||
border-color: #F9E98E;
|
||||
color: #A27D35;
|
||||
}
|
||||
|
||||
.ui-tooltip-cream .ui-tooltip-titlebar{
|
||||
background-color: #F0DE7D;
|
||||
}
|
||||
|
||||
.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{
|
||||
background-position: -82px 0;
|
||||
}
|
||||
|
||||
|
||||
/*! Red tooltip style */
|
||||
.ui-tooltip-red{
|
||||
background-color: #F78B83;
|
||||
border-color: #D95252;
|
||||
color: #912323;
|
||||
}
|
||||
|
||||
.ui-tooltip-red .ui-tooltip-titlebar{
|
||||
background-color: #F06D65;
|
||||
}
|
||||
|
||||
.ui-tooltip-red .ui-state-default .ui-tooltip-icon{
|
||||
background-position: -102px 0;
|
||||
}
|
||||
|
||||
.ui-tooltip-red .ui-tooltip-icon{
|
||||
border-color: #D95252;
|
||||
}
|
||||
|
||||
.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #D95252;
|
||||
}
|
||||
|
||||
|
||||
/*! Green tooltip style */
|
||||
.ui-tooltip-green{
|
||||
background-color: #CAED9E;
|
||||
border-color: #90D93F;
|
||||
color: #3F6219;
|
||||
}
|
||||
|
||||
.ui-tooltip-green .ui-tooltip-titlebar{
|
||||
background-color: #B0DE78;
|
||||
}
|
||||
|
||||
.ui-tooltip-green .ui-state-default .ui-tooltip-icon{
|
||||
background-position: -42px 0;
|
||||
}
|
||||
|
||||
|
||||
/*! Blue tooltip style */
|
||||
.ui-tooltip-blue{
|
||||
background-color: #E5F6FE;
|
||||
border-color: #ADD9ED;
|
||||
color: #5E99BD;
|
||||
}
|
||||
|
||||
.ui-tooltip-blue .ui-tooltip-titlebar{
|
||||
background-color: #D0E9F5;
|
||||
}
|
||||
|
||||
.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{
|
||||
background-position: -2px 0;
|
||||
}
|
||||
|
||||
|
||||
/* Add shadows to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
|
||||
.ui-tooltip-shadow{
|
||||
-webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
|
||||
-moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
|
||||
box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
|
||||
.ui-tooltip-rounded,
|
||||
.ui-tooltip-tipsy,
|
||||
.ui-tooltip-bootstrap{
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
/* Youtube tooltip style */
|
||||
.ui-tooltip-youtube{
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
|
||||
-webkit-box-shadow: 0 0 3px #333;
|
||||
-moz-box-shadow: 0 0 3px #333;
|
||||
box-shadow: 0 0 3px #333;
|
||||
|
||||
color: white;
|
||||
border-width: 0;
|
||||
|
||||
background: #4A4A4A;
|
||||
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
|
||||
background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||
background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||
background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||
background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||
}
|
||||
|
||||
.ui-tooltip-youtube .ui-tooltip-titlebar{
|
||||
background-color: #4A4A4A;
|
||||
background-color: rgba(0,0,0,0);
|
||||
}
|
||||
|
||||
.ui-tooltip-youtube .ui-tooltip-content{
|
||||
padding: .75em;
|
||||
font: 12px arial,sans-serif;
|
||||
|
||||
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);";
|
||||
}
|
||||
|
||||
.ui-tooltip-youtube .ui-tooltip-icon{
|
||||
border-color: #222;
|
||||
}
|
||||
|
||||
.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #303030;
|
||||
}
|
||||
|
||||
|
||||
/* jQuery TOOLS Tooltip style */
|
||||
.ui-tooltip-jtools{
|
||||
background: #232323;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
|
||||
background-image: -moz-linear-gradient(top, #717171, #232323);
|
||||
background-image: -webkit-linear-gradient(top, #717171, #232323);
|
||||
background-image: -ms-linear-gradient(top, #717171, #232323);
|
||||
background-image: -o-linear-gradient(top, #717171, #232323);
|
||||
|
||||
border: 2px solid #ddd;
|
||||
border: 2px solid rgba(241,241,241,1);
|
||||
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
|
||||
-webkit-box-shadow: 0 0 12px #333;
|
||||
-moz-box-shadow: 0 0 12px #333;
|
||||
box-shadow: 0 0 12px #333;
|
||||
}
|
||||
|
||||
/* IE Specific */
|
||||
.ui-tooltip-jtools .ui-tooltip-titlebar{
|
||||
background-color: transparent;
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
|
||||
}
|
||||
.ui-tooltip-jtools .ui-tooltip-content{
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
|
||||
}
|
||||
|
||||
.ui-tooltip-jtools .ui-tooltip-titlebar,
|
||||
.ui-tooltip-jtools .ui-tooltip-content{
|
||||
background: transparent;
|
||||
color: white;
|
||||
border: 0 dashed transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-jtools .ui-tooltip-icon{
|
||||
border-color: #555;
|
||||
}
|
||||
|
||||
.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #333;
|
||||
}
|
||||
|
||||
|
||||
/* Cluetip style */
|
||||
.ui-tooltip-cluetip{
|
||||
-webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||
-moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||
|
||||
background-color: #D9D9C2;
|
||||
color: #111;
|
||||
border: 0 dashed transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-cluetip .ui-tooltip-titlebar{
|
||||
background-color: #87876A;
|
||||
color: white;
|
||||
border: 0 dashed transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-cluetip .ui-tooltip-icon{
|
||||
border-color: #808064;
|
||||
}
|
||||
|
||||
.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #696952;
|
||||
color: #696952;
|
||||
}
|
||||
|
||||
|
||||
/* Tipsy style */
|
||||
.ui-tooltip-tipsy{
|
||||
background: black;
|
||||
background: rgba(0, 0, 0, .87);
|
||||
|
||||
color: white;
|
||||
border: 0 solid transparent;
|
||||
|
||||
font-size: 11px;
|
||||
font-family: 'Lucida Grande', sans-serif;
|
||||
font-weight: bold;
|
||||
line-height: 16px;
|
||||
text-shadow: 0 1px black;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipsy .ui-tooltip-titlebar{
|
||||
padding: 6px 35px 0 10;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipsy .ui-tooltip-content{
|
||||
padding: 6px 10;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipsy .ui-tooltip-icon{
|
||||
border-color: #222;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{
|
||||
border-color: #303030;
|
||||
}
|
||||
|
||||
|
||||
/* Tipped style */
|
||||
.ui-tooltip-tipped{
|
||||
border: 3px solid #959FA9;
|
||||
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
|
||||
background-color: #F9F9F9;
|
||||
color: #454545;
|
||||
|
||||
font-weight: normal;
|
||||
font-family: serif;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipped .ui-tooltip-titlebar{
|
||||
border-bottom-width: 0;
|
||||
|
||||
color: white;
|
||||
background: #3A79B8;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
|
||||
background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D);
|
||||
background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
|
||||
background-image: -ms-linear-gradient(top, #3A79B8, #2E629D);
|
||||
background-image: -o-linear-gradient(top, #3A79B8, #2E629D);
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
|
||||
}
|
||||
|
||||
.ui-tooltip-tipped .ui-tooltip-icon{
|
||||
border: 2px solid #285589;
|
||||
background: #285589;
|
||||
}
|
||||
|
||||
.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{
|
||||
background-color: #FBFBFB;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Twitter Bootstrap style.
|
||||
*
|
||||
* Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11.
|
||||
* Does not work with IE 7.
|
||||
*/
|
||||
.ui-tooltip-bootstrap{
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
|
||||
color: #333333;
|
||||
background-color: #ffffff;
|
||||
|
||||
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.ui-tooltip-bootstrap .ui-tooltip-titlebar{
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-bootstrap .ui-tooltip-titlebar .ui-state-default{
|
||||
right: 9px; top: 49%;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
.ui-tooltip-bootstrap .ui-tooltip-icon{
|
||||
background: white;
|
||||
}
|
||||
|
||||
.ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon{
|
||||
width: auto;
|
||||
height: auto;
|
||||
float: right;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
line-height: 18px;
|
||||
color: #000000;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
opacity: 0.2;
|
||||
filter: alpha(opacity=20);
|
||||
}
|
||||
|
||||
.ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon:hover{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
|
||||
/* IE9 fix - removes all filters */
|
||||
.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,
|
||||
.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{
|
||||
filter: none;
|
||||
-ms-filter: none;
|
||||
}
|
||||
|
||||
|
||||
/* Tips plugin */
|
||||
.ui-tooltip .ui-tooltip-tip{
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.ui-tooltip .ui-tooltip-tip,
|
||||
.ui-tooltip .ui-tooltip-tip .qtip-vml{
|
||||
position: absolute;
|
||||
|
||||
line-height: 0.1px !important;
|
||||
font-size: 0.1px !important;
|
||||
color: #123456;
|
||||
|
||||
background: transparent;
|
||||
border: 0 dashed transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip .ui-tooltip-tip canvas{ top: 0; left: 0; }
|
||||
|
||||
.ui-tooltip .ui-tooltip-tip .qtip-vml{
|
||||
behavior: url(#default#VML);
|
||||
display: inline-block;
|
||||
visibility: visible;
|
||||
}
|
||||
/* Modal plugin */
|
||||
#qtip-overlay{
|
||||
position: fixed;
|
||||
left: -10000em;
|
||||
top: -10000em;
|
||||
}
|
||||
|
||||
/* Applied to modals with show.modal.blur set to true */
|
||||
#qtip-overlay.blurs{ cursor: pointer; }
|
||||
|
||||
/* Change opacity of overlay here */
|
||||
#qtip-overlay div{
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
width: 100%; height: 100%;
|
||||
|
||||
background-color: black;
|
||||
|
||||
opacity: 0.7;
|
||||
filter:alpha(opacity=70);
|
||||
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
|
||||
}
|
||||
|
||||
86
book/common/ext/codelens/v3/css/opt-frontend.css
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
/* CSS accompanying ../visualize.html */
|
||||
|
||||
h1 {
|
||||
font-weight: normal;
|
||||
font-size: 20pt;
|
||||
font-family: georgia, serif;
|
||||
line-height: 1em; /* enforce single spacing so that Georgia works */
|
||||
|
||||
margin-top: 0px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 12pt;
|
||||
font-weight: normal;
|
||||
font-family: georgia, serif;
|
||||
line-height: 1.1em; /* enforce single spacing so that Georgia works */
|
||||
|
||||
margin-top: 2px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited,
|
||||
a:hover {
|
||||
color: #3D58A2;
|
||||
}
|
||||
|
||||
span {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
table#pyOutputPane {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#pyInputPane {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
max-width: 700px;
|
||||
/* center align */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#codeInputPane {
|
||||
margin-top: 5px;
|
||||
font-size: 12pt;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
button.smallBtn {
|
||||
font-size: 10pt;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
button.bigBtn {
|
||||
font-size: 13pt;
|
||||
padding: 6px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
color: #666666;
|
||||
font-size: 9pt;
|
||||
border-top: 1px solid #bbbbbb;
|
||||
padding-top: 5px;
|
||||
margin-top: 5px;
|
||||
|
||||
max-width: 700px;
|
||||
/* center align */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
|
||||
/* necessary for CodeMirror error line highlighting to work! */
|
||||
.CodeMirror .errorLine { background: #ffff3f !important; }
|
||||
85
book/common/ext/codelens/v3/css/opt-lessons.css
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
/* CSS accompanying ../lesson.html */
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
|
||||
font-size: 10pt;
|
||||
|
||||
max-width: 900px;
|
||||
/* center align */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
div#lessonHeader {
|
||||
margin-bottom: 15pt;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
div#lessonTitle {
|
||||
font-size: 16pt;
|
||||
margin-bottom: 15pt;
|
||||
}
|
||||
|
||||
div#lessonDescription {
|
||||
font-size: 11pt;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div#lessonNarration {
|
||||
font-size: 11pt;
|
||||
min-height: 25px;
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.5em;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
|
||||
a,
|
||||
a:visited,
|
||||
a:hover {
|
||||
color: #3D58A2;
|
||||
}
|
||||
|
||||
span {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
table#pyOutputPane {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#pyInputPane {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
max-width: 700px;
|
||||
/* center align */
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#codeInputPane {
|
||||
margin-top: 5px;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
button.smallBtn {
|
||||
font-size: 10pt;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
button.bigBtn {
|
||||
font-size: 12pt;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
color: #666;
|
||||
font-size: 9pt;
|
||||
border-top: 1px solid #bbb;
|
||||
padding-top: 12px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
749
book/common/ext/codelens/v3/css/pytutor.css
Normal file
|
|
@ -0,0 +1,749 @@
|
|||
/*
|
||||
|
||||
Online Python Tutor
|
||||
https://github.com/pgbovine/OnlinePythonTutor/
|
||||
|
||||
Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net)
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
/* Most recent color scheme redesign on 2012-08-19 */
|
||||
|
||||
/* To prevent CSS namespace clashes, prefix all rules with:
|
||||
div.ExecutionVisualizer
|
||||
*/
|
||||
|
||||
|
||||
/* reset some styles to nullify effects of existing stylesheets
|
||||
e.g., http://meyerweb.com/eric/tools/css/reset/
|
||||
*/
|
||||
div.ExecutionVisualizer {
|
||||
/* none for now */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.visualizer {
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-size: 10pt;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.visualizer td.vizLayoutTd {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer td#stack_td,
|
||||
div.ExecutionVisualizer td#heap_td {
|
||||
vertical-align:top;
|
||||
font-size: 10pt; /* don't make fonts in the heap so big! */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #dataViz {
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#codeDisplayDiv {
|
||||
/* set this as default unless user specifies a custom size */
|
||||
width: 550px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#pyCodeOutputDiv {
|
||||
/*max-width: 550px;*/
|
||||
max-height: 450px;
|
||||
/*max-height: 620px;*/
|
||||
overflow: auto;
|
||||
/*margin-bottom: 4px;*/
|
||||
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table#pyCodeOutput {
|
||||
font-family: Andale mono, monospace;
|
||||
font-size:12pt;
|
||||
line-height:1.1em;
|
||||
|
||||
border-collapse: separate; /* some crazy CSS voodoo that needs to be
|
||||
there so that SVG arrows to the left
|
||||
of the code line up vertically in Chrome */
|
||||
border-spacing: 0px;
|
||||
border-top: 1px solid #bbb;
|
||||
padding-top: 3px;
|
||||
border-bottom: 1px solid #bbb;
|
||||
/*margin-top: 6px;*/
|
||||
margin: 6px auto; /* Center code in its pane */
|
||||
}
|
||||
|
||||
/* don't wrap lines within code output ... FORCE scrollbars to appear */
|
||||
div.ExecutionVisualizer table#pyCodeOutput td {
|
||||
white-space: nowrap;
|
||||
vertical-align: middle; /* explicitly force, to override external CSS conflicts */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #leftCodeGutterSVG {
|
||||
width: 18px;
|
||||
height: 0px; /* programmatically set this later ... IE needs this to
|
||||
be 0 or it defaults to something arbitrary and gross */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #prevLegendArrowSVG,
|
||||
div.ExecutionVisualizer #curLegendArrowSVG {
|
||||
width: 18px;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .arrow {
|
||||
font-size: 16pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table#pyCodeOutput .lineNo {
|
||||
color: #aaa;
|
||||
padding: 0.2em;
|
||||
padding-left: 0.3em;
|
||||
padding-right: 0.5em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table#pyCodeOutput .cod {
|
||||
/*font-weight: bold;*/
|
||||
margin-left: 3px;
|
||||
padding-left: 7px;
|
||||
text-align: left; /* necessary or else doesn't work properly in IE */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#progOutputs {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#legendDiv {
|
||||
margin-top: 10px;
|
||||
padding: 0px;
|
||||
text-align: left;
|
||||
color: #666;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#editCodeLinkDiv {
|
||||
text-align: center;
|
||||
/*
|
||||
margin-top: 12px;
|
||||
margin-bottom: 4px;
|
||||
*/
|
||||
margin: 8px auto;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#annotateLinkDiv {
|
||||
/*text-align: left;*/
|
||||
margin-top: 0px;
|
||||
margin-bottom: 12px;
|
||||
/*
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
*/
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#stepAnnotationDiv {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer textarea#stepAnnotationEditor,
|
||||
div.ExecutionVisualizer textarea#vizTitleEditor,
|
||||
div.ExecutionVisualizer textarea#vizDescriptionEditor {
|
||||
border: 1px solid #999999;
|
||||
padding: 4px;
|
||||
|
||||
overflow: auto; /* to look pretty on IE */
|
||||
/* make sure textarea doesn't grow and stretch */
|
||||
resize: none;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer #errorOutput {
|
||||
color: #e93f34; /* should match brightRed JavaScript variable */
|
||||
font-size: 12pt;
|
||||
padding: 2px;
|
||||
line-height: 1.5em;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
/* VCR control buttons for stepping through execution */
|
||||
|
||||
div.ExecutionVisualizer #vcrControls {
|
||||
margin: 15px auto;
|
||||
/*width: 100%;*/
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #vcrControls button {
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #vcrControls #curInstr {
|
||||
margin-left: 4px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #pyStdout {
|
||||
border: 1px solid #999999;
|
||||
font-size: 12pt;
|
||||
padding: 4px;
|
||||
font-family: Andale mono, monospace;
|
||||
|
||||
overflow: auto; /* to look pretty on IE */
|
||||
/* make sure textarea doesn't grow and stretch */
|
||||
resize: none;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer .vizFrame {
|
||||
margin-bottom: 20px;
|
||||
padding-left: 8px;
|
||||
border-left: 2px solid #cccccc;
|
||||
}
|
||||
|
||||
|
||||
/* Rendering of primitive types */
|
||||
|
||||
div.ExecutionVisualizer .nullObj {
|
||||
// font-size: 8pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .stringObj,
|
||||
div.ExecutionVisualizer .customObj,
|
||||
div.ExecutionVisualizer .funcObj {
|
||||
font-family: Andale mono, monospace;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .retval {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .stackFrame .retval {
|
||||
color: #e93f34; /* highlight non-zombie stack frame return values -
|
||||
should match brightRed JavaScript variable */
|
||||
}
|
||||
|
||||
/* Rendering of basic compound types */
|
||||
|
||||
div.ExecutionVisualizer table.listTbl,
|
||||
div.ExecutionVisualizer table.tupleTbl,
|
||||
div.ExecutionVisualizer table.setTbl {
|
||||
background-color: #ffffc6;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer table.listTbl {
|
||||
border: 0px solid black;
|
||||
border-spacing: 0px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.listTbl td.listHeader,
|
||||
div.ExecutionVisualizer table.tupleTbl td.tupleHeader {
|
||||
padding-left: 4px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 3px;
|
||||
font-size: 8pt;
|
||||
color: #777;
|
||||
text-align: left;
|
||||
border-left: 1px solid #555555;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.tupleTbl {
|
||||
border-spacing: 0px;
|
||||
color: black;
|
||||
|
||||
border-bottom: 1px solid #555555; /* must match td.tupleHeader border */
|
||||
border-top: 1px solid #555555; /* must match td.tupleHeader border */
|
||||
border-right: 1px solid #555555; /* must match td.tupleHeader border */
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer table.listTbl td.listElt {
|
||||
border-bottom: 1px solid #555555; /* must match td.listHeader border */
|
||||
border-left: 1px solid #555555; /* must match td.listHeader border */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.tupleTbl td.tupleElt {
|
||||
border-left: 1px solid #555555; /* must match td.tupleHeader border */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.customObjTbl {
|
||||
background-color: white;
|
||||
color: black;
|
||||
border: 1px solid black;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.customObjTbl td.customObjElt {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.listTbl td.listElt,
|
||||
div.ExecutionVisualizer table.tupleTbl td.tupleElt {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 8px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.setTbl {
|
||||
border: 1px solid #555555;
|
||||
border-spacing: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.setTbl td.setElt {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer table.dictTbl,
|
||||
div.ExecutionVisualizer table.instTbl,
|
||||
div.ExecutionVisualizer table.classTbl {
|
||||
border-spacing: 1px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.dictTbl td.dictKey,
|
||||
div.ExecutionVisualizer table.instTbl td.instKey,
|
||||
div.ExecutionVisualizer table.classTbl td.classKey {
|
||||
background-color: #faebbf;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.dictTbl td.dictVal,
|
||||
div.ExecutionVisualizer table.instTbl td.instVal,
|
||||
div.ExecutionVisualizer table.classTbl td.classVal {
|
||||
background-color: #ffffc6;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer table.dictTbl td.dictKey,
|
||||
div.ExecutionVisualizer table.instTbl td.instKey,
|
||||
div.ExecutionVisualizer table.classTbl td.classKey {
|
||||
padding-top: 12px /*15px*/;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 10px;
|
||||
padding-right: 4px;
|
||||
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.dictTbl td.dictVal,
|
||||
div.ExecutionVisualizer table.instTbl td.instVal,
|
||||
div.ExecutionVisualizer table.classTbl td.classVal {
|
||||
padding-top: 12px /*15px*/;
|
||||
padding-bottom: 5px;
|
||||
padding-right: 10px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer table.classTbl td,
|
||||
div.ExecutionVisualizer table.instTbl td {
|
||||
border-bottom: 1px #888 solid;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.classTbl td.classVal,
|
||||
div.ExecutionVisualizer table.instTbl td.instVal {
|
||||
border-left: 1px #888 solid;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.classTbl {
|
||||
border-collapse: collapse;
|
||||
border: 1px #888 solid;
|
||||
}
|
||||
|
||||
/* only add a border to dicts if they're embedded within another object */
|
||||
div.ExecutionVisualizer td.listElt table.dictTbl,
|
||||
div.ExecutionVisualizer td.tupleElt table.dictTbl,
|
||||
div.ExecutionVisualizer td.dictVal table.dictTbl,
|
||||
div.ExecutionVisualizer td.instVal table.dictTbl,
|
||||
div.ExecutionVisualizer td.classVal table.dictTbl {
|
||||
border: 1px #888 solid;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .objectIdLabel {
|
||||
font-size: 8pt;
|
||||
color: #444;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .typeLabel {
|
||||
font-size: 8pt;
|
||||
color: #555;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#stack,
|
||||
div.ExecutionVisualizer div#globals_area {
|
||||
padding-left: 10px;
|
||||
padding-right: 30px;
|
||||
|
||||
/* no longer necessary ... */
|
||||
/*float: left;*/
|
||||
/* border-right: 1px dashed #bbbbbb; */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.stackFrame,
|
||||
div.ExecutionVisualizer div.zombieStackFrame {
|
||||
background-color: #ffffff;
|
||||
margin-bottom: 15px;
|
||||
padding: 2px;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
padding-bottom: 4px;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.zombieStackFrame {
|
||||
border-left: 1px dotted #aaa;
|
||||
/*color: #c0c0c0;*/
|
||||
color: #b0b0b0;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.highlightedStackFrame {
|
||||
background-color: #d7e7fb;
|
||||
|
||||
/*background-color: #c0daf8;*/
|
||||
/*background-color: #9eeaff #c5dfea;*/
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.stackFrame,
|
||||
div.ExecutionVisualizer div.highlightedStackFrame {
|
||||
border-left: 1px solid #a6b3b6;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer div.stackFrameHeader {
|
||||
font-family: Andale mono, monospace;
|
||||
font-size: 10pt;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 3px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer td.stackFrameVar {
|
||||
text-align: right;
|
||||
padding-right: 8px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer td.stackFrameValue {
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #aaaaaa;
|
||||
border-left: 1px solid #aaaaaa;
|
||||
|
||||
vertical-align: middle;
|
||||
|
||||
padding-top: 3px;
|
||||
padding-left: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .stackFrameVarTable tr {
|
||||
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .stackFrameVarTable {
|
||||
text-align: right;
|
||||
padding-top: 3px;
|
||||
|
||||
/* right-align the table */
|
||||
margin-left: auto;
|
||||
margin-right: 0px;
|
||||
|
||||
/* hack to counteract possible nasty CSS reset styles from parent divs */
|
||||
border-collapse: separate;
|
||||
border-spacing: 2px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#heap {
|
||||
float: left;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer td.toplevelHeapObject {
|
||||
/* needed for d3 to do transitions */
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
/*
|
||||
border: 2px dotted white;
|
||||
border-color: white;
|
||||
*/
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer table.heapRow {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.heapObject {
|
||||
padding-left: 2px; /* leave a TINY amount of room for connector endpoints */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div.heapPrimitive {
|
||||
padding-left: 4px; /* leave some more room for connector endpoints */
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#stackHeader {
|
||||
margin-bottom: 15px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#heapHeader {
|
||||
/*margin-top: 2px;
|
||||
margin-bottom: 13px;*/
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#stackHeader,
|
||||
div.ExecutionVisualizer div#heapHeader {
|
||||
color: #333333;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #executionSlider {
|
||||
/* if you set 'width', then it looks ugly when you dynamically resize */
|
||||
margin-top: 15px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
width: 95%;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #executionSliderCaption {
|
||||
font-size: 8pt;
|
||||
color: #666666;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer #executionSliderFooter {
|
||||
margin-top: -7px; /* make it butt up against #executionSlider */
|
||||
}
|
||||
|
||||
|
||||
/* darken slider handle a bit */
|
||||
div.ExecutionVisualizer .ui-slider .ui-slider-handle {
|
||||
border: 1px solid #999;
|
||||
}
|
||||
|
||||
|
||||
/* for annotation bubbles */
|
||||
|
||||
/* For styling tricks, see: http://css-tricks.com/textarea-tricks/ */
|
||||
textarea.bubbleInputText {
|
||||
border: 1px solid #ccc;
|
||||
outline: none;
|
||||
overflow: auto; /* to look pretty on IE */
|
||||
|
||||
/* make sure textarea doesn't grow and stretch the enclosing bubble */
|
||||
resize: none;
|
||||
width: 225px;
|
||||
max-width: 225px;
|
||||
height: 35px;
|
||||
max-height: 35px;
|
||||
}
|
||||
|
||||
|
||||
.ui-tooltip-pgbootstrap,
|
||||
textarea.bubbleInputText {
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-size: 9pt;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
|
||||
/* modified version of Twitter bootstrap style by Philip Guo */
|
||||
.ui-tooltip-pgbootstrap{
|
||||
color: #333;
|
||||
background-color: #ffffff;
|
||||
|
||||
max-width: 250px;
|
||||
min-width: 10px;
|
||||
|
||||
border: 2px solid #4284D3;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
||||
/* way too poofy ...
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
*/
|
||||
|
||||
-webkit-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2);
|
||||
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-titlebar{
|
||||
font-size: 18px;
|
||||
line-height: 22px;
|
||||
|
||||
border-bottom: 1px solid #ccc;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-content{
|
||||
padding: 5px /* 5px is minimum or else it might look ugly */ 8px;
|
||||
}
|
||||
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{
|
||||
right: 9px; top: 49%;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-icon{
|
||||
background: white;
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon{
|
||||
width: auto;
|
||||
height: auto;
|
||||
float: right;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
line-height: 18px;
|
||||
color: #000000;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
opacity: 0.2;
|
||||
filter: alpha(opacity=20);
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon:hover{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
opacity: 0.4;
|
||||
filter: alpha(opacity=40);
|
||||
}
|
||||
|
||||
|
||||
/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
|
||||
.ui-tooltip-pgbootstrap{
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
|
||||
.ui-tooltip-pgbootstrap-stub{
|
||||
border: 1px solid #999;
|
||||
|
||||
/*
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
*/
|
||||
}
|
||||
|
||||
.ui-tooltip-pgbootstrap-stub .ui-tooltip-content{
|
||||
padding: 6px 9px;
|
||||
}
|
||||
|
||||
|
||||
div.ExecutionVisualizer .annotationText,
|
||||
div.ExecutionVisualizer .vizDescriptionText {
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-size: 11pt;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .vizTitleText {
|
||||
font-family: verdana, arial, helvetica, sans-serif;
|
||||
font-size: 16pt;
|
||||
margin-bottom: 12pt;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer div#vizHeader {
|
||||
margin-bottom: 10px;
|
||||
width: 700px;
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
/* prev then curr, so curr gets precedence when both apply */
|
||||
div.ExecutionVisualizer .highlight-prev {
|
||||
background-color: #F0F0EA;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .highlight-curr {
|
||||
background-color: #FFFF66;
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .highlight-legend {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
/* resizing sliders from David Pritchard */
|
||||
.ui-resizable-e {
|
||||
background-color: #dddddd;
|
||||
width: 1px;
|
||||
border: 3px solid white;
|
||||
}
|
||||
|
||||
.ui-resizable-e:hover {
|
||||
border-color: #dddddd;
|
||||
}
|
||||
|
||||
|
||||
/* for pyCrazyMode */
|
||||
|
||||
/* prev then curr, so curr gets precedence when both apply */
|
||||
div.ExecutionVisualizer .pycrazy-highlight-prev {
|
||||
background-color: #eeeeee; /*#F0F0EA;*/
|
||||
/*
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
*/
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .pycrazy-highlight-cur {
|
||||
background-color: #FFFF66;
|
||||
/* aligned slightly higher than border-bottom */
|
||||
/*
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid #e93f34;
|
||||
*/
|
||||
}
|
||||
|
||||
div.ExecutionVisualizer .pycrazy-highlight-prev-and-cur {
|
||||
background-color: #FFFF66;
|
||||
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid #999999;
|
||||
}
|
||||
|
After Width: | Height: | Size: 260 B |
|
After Width: | Height: | Size: 251 B |
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 104 B |
|
After Width: | Height: | Size: 125 B |
|
After Width: | Height: | Size: 105 B |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 90 B |
|
After Width: | Height: | Size: 129 B |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
316
book/common/ext/codelens/v3/css/ui-lightness/jquery-ui-1.8.21.custom.css
vendored
Normal file
|
|
@ -0,0 +1,316 @@
|
|||
/*!
|
||||
* jQuery UI CSS Framework 1.8.21
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden { display: none; }
|
||||
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
|
||||
.ui-helper-clearfix:after { clear: both; }
|
||||
.ui-helper-clearfix { zoom: 1; }
|
||||
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
/*!
|
||||
* jQuery UI CSS Framework 1.8.21
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget .ui-widget { font-size: 1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||
/* pgbovine - switch border from #dddddd to #ccc */
|
||||
.ui-widget-content { border: 1px solid #ccc; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||
.ui-widget-content a { color: #333333; }
|
||||
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
|
||||
|
||||
/* pgbovine - eliminate hover colors */
|
||||
/*
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
|
||||
*/
|
||||
|
||||
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
|
||||
.ui-widget :active { outline: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*!
|
||||
* jQuery UI Slider 1.8.21
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Slider#theming
|
||||
*/
|
||||
.ui-slider { position: relative; text-align: left; }
|
||||
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||
|
||||
.ui-slider-horizontal { height: .8em; }
|
||||
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||
|
||||
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||
.ui-slider-vertical .ui-slider-range-max { top: 0; }
|
||||
335
book/common/ext/codelens/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css
vendored
Normal file
|
|
@ -0,0 +1,335 @@
|
|||
/*!
|
||||
* jQuery UI CSS Framework 1.8.24
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden { display: none; }
|
||||
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
|
||||
.ui-helper-clearfix:after { clear: both; }
|
||||
.ui-helper-clearfix { zoom: 1; }
|
||||
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
/*!
|
||||
* jQuery UI CSS Framework 1.8.24
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget .ui-widget { font-size: 1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||
/* pgbovine - switch border from #dddddd to #ccc */
|
||||
.ui-widget-content { border: 1px solid #ccc; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||
.ui-widget-content a { color: #333333; }
|
||||
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
|
||||
|
||||
/* pgbovine - eliminate hover colors */
|
||||
/*
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
|
||||
*/
|
||||
|
||||
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
|
||||
.ui-widget :active { outline: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*!
|
||||
* jQuery UI Resizable 1.8.24
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Resizable#theming
|
||||
*/
|
||||
.ui-resizable { position: relative;}
|
||||
.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
|
||||
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
|
||||
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
|
||||
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
|
||||
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
|
||||
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
|
||||
* jQuery UI Slider 1.8.24
|
||||
*
|
||||
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Slider#theming
|
||||
*/
|
||||
.ui-slider { position: relative; text-align: left; }
|
||||
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||
|
||||
.ui-slider-horizontal { height: .8em; }
|
||||
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||
|
||||
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||
.ui-slider-vertical .ui-slider-range-max { top: 0; }
|
||||
BIN
book/common/ext/codelens/v3/css/x.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
3237
book/common/ext/codelens/v3/js/codemirror/codemirror.js
Normal file
338
book/common/ext/codelens/v3/js/codemirror/python.js
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
CodeMirror.defineMode("python", function(conf, parserConf) {
|
||||
var ERRORCLASS = 'error';
|
||||
|
||||
function wordRegexp(words) {
|
||||
return new RegExp("^((" + words.join(")|(") + "))\\b");
|
||||
}
|
||||
|
||||
var singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!]");
|
||||
var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]');
|
||||
var doubleOperators = new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))");
|
||||
var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))");
|
||||
var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))");
|
||||
var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*");
|
||||
|
||||
var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']);
|
||||
var commonkeywords = ['as', 'assert', 'break', 'class', 'continue',
|
||||
'def', 'del', 'elif', 'else', 'except', 'finally',
|
||||
'for', 'from', 'global', 'if', 'import',
|
||||
'lambda', 'pass', 'raise', 'return',
|
||||
'try', 'while', 'with', 'yield'];
|
||||
var commonBuiltins = ['abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'callable', 'chr',
|
||||
'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod',
|
||||
'enumerate', 'eval', 'filter', 'float', 'format', 'frozenset',
|
||||
'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id',
|
||||
'input', 'int', 'isinstance', 'issubclass', 'iter', 'len',
|
||||
'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next',
|
||||
'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
|
||||
'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
|
||||
'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple',
|
||||
'type', 'vars', 'zip', '__import__', 'NotImplemented',
|
||||
'Ellipsis', '__debug__'];
|
||||
var py2 = {'builtins': ['apply', 'basestring', 'buffer', 'cmp', 'coerce', 'execfile',
|
||||
'file', 'intern', 'long', 'raw_input', 'reduce', 'reload',
|
||||
'unichr', 'unicode', 'xrange', 'False', 'True', 'None'],
|
||||
'keywords': ['exec', 'print']};
|
||||
var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'],
|
||||
'keywords': ['nonlocal', 'False', 'True', 'None']};
|
||||
|
||||
if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) {
|
||||
commonkeywords = commonkeywords.concat(py3.keywords);
|
||||
commonBuiltins = commonBuiltins.concat(py3.builtins);
|
||||
var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i");
|
||||
} else {
|
||||
commonkeywords = commonkeywords.concat(py2.keywords);
|
||||
commonBuiltins = commonBuiltins.concat(py2.builtins);
|
||||
var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i");
|
||||
}
|
||||
var keywords = wordRegexp(commonkeywords);
|
||||
var builtins = wordRegexp(commonBuiltins);
|
||||
|
||||
var indentInfo = null;
|
||||
|
||||
// tokenizers
|
||||
function tokenBase(stream, state) {
|
||||
// Handle scope changes
|
||||
if (stream.sol()) {
|
||||
var scopeOffset = state.scopes[0].offset;
|
||||
if (stream.eatSpace()) {
|
||||
var lineOffset = stream.indentation();
|
||||
if (lineOffset > scopeOffset) {
|
||||
indentInfo = 'indent';
|
||||
} else if (lineOffset < scopeOffset) {
|
||||
indentInfo = 'dedent';
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
if (scopeOffset > 0) {
|
||||
dedent(stream, state);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stream.eatSpace()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var ch = stream.peek();
|
||||
|
||||
// Handle Comments
|
||||
if (ch === '#') {
|
||||
stream.skipToEnd();
|
||||
return 'comment';
|
||||
}
|
||||
|
||||
// Handle Number Literals
|
||||
if (stream.match(/^[0-9\.]/, false)) {
|
||||
var floatLiteral = false;
|
||||
// Floats
|
||||
if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; }
|
||||
if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; }
|
||||
if (stream.match(/^\.\d+/)) { floatLiteral = true; }
|
||||
if (floatLiteral) {
|
||||
// Float literals may be "imaginary"
|
||||
stream.eat(/J/i);
|
||||
return 'number';
|
||||
}
|
||||
// Integers
|
||||
var intLiteral = false;
|
||||
// Hex
|
||||
if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; }
|
||||
// Binary
|
||||
if (stream.match(/^0b[01]+/i)) { intLiteral = true; }
|
||||
// Octal
|
||||
if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; }
|
||||
// Decimal
|
||||
if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) {
|
||||
// Decimal literals may be "imaginary"
|
||||
stream.eat(/J/i);
|
||||
// TODO - Can you have imaginary longs?
|
||||
intLiteral = true;
|
||||
}
|
||||
// Zero by itself with no other piece of number.
|
||||
if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
|
||||
if (intLiteral) {
|
||||
// Integer literals may be "long"
|
||||
stream.eat(/L/i);
|
||||
return 'number';
|
||||
}
|
||||
}
|
||||
|
||||
// Handle Strings
|
||||
if (stream.match(stringPrefixes)) {
|
||||
state.tokenize = tokenStringFactory(stream.current());
|
||||
return state.tokenize(stream, state);
|
||||
}
|
||||
|
||||
// Handle operators and Delimiters
|
||||
if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
|
||||
return null;
|
||||
}
|
||||
if (stream.match(doubleOperators)
|
||||
|| stream.match(singleOperators)
|
||||
|| stream.match(wordOperators)) {
|
||||
return 'operator';
|
||||
}
|
||||
if (stream.match(singleDelimiters)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (stream.match(keywords)) {
|
||||
return 'keyword';
|
||||
}
|
||||
|
||||
if (stream.match(builtins)) {
|
||||
return 'builtin';
|
||||
}
|
||||
|
||||
if (stream.match(identifiers)) {
|
||||
return 'variable';
|
||||
}
|
||||
|
||||
// Handle non-detected items
|
||||
stream.next();
|
||||
return ERRORCLASS;
|
||||
}
|
||||
|
||||
function tokenStringFactory(delimiter) {
|
||||
while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) {
|
||||
delimiter = delimiter.substr(1);
|
||||
}
|
||||
var singleline = delimiter.length == 1;
|
||||
var OUTCLASS = 'string';
|
||||
|
||||
return function tokenString(stream, state) {
|
||||
while (!stream.eol()) {
|
||||
stream.eatWhile(/[^'"\\]/);
|
||||
if (stream.eat('\\')) {
|
||||
stream.next();
|
||||
if (singleline && stream.eol()) {
|
||||
return OUTCLASS;
|
||||
}
|
||||
} else if (stream.match(delimiter)) {
|
||||
state.tokenize = tokenBase;
|
||||
return OUTCLASS;
|
||||
} else {
|
||||
stream.eat(/['"]/);
|
||||
}
|
||||
}
|
||||
if (singleline) {
|
||||
if (parserConf.singleLineStringErrors) {
|
||||
return ERRORCLASS;
|
||||
} else {
|
||||
state.tokenize = tokenBase;
|
||||
}
|
||||
}
|
||||
return OUTCLASS;
|
||||
};
|
||||
}
|
||||
|
||||
function indent(stream, state, type) {
|
||||
type = type || 'py';
|
||||
var indentUnit = 0;
|
||||
if (type === 'py') {
|
||||
if (state.scopes[0].type !== 'py') {
|
||||
state.scopes[0].offset = stream.indentation();
|
||||
return;
|
||||
}
|
||||
for (var i = 0; i < state.scopes.length; ++i) {
|
||||
if (state.scopes[i].type === 'py') {
|
||||
indentUnit = state.scopes[i].offset + conf.indentUnit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
indentUnit = stream.column() + stream.current().length;
|
||||
}
|
||||
state.scopes.unshift({
|
||||
offset: indentUnit,
|
||||
type: type
|
||||
});
|
||||
}
|
||||
|
||||
function dedent(stream, state, type) {
|
||||
type = type || 'py';
|
||||
if (state.scopes.length == 1) return;
|
||||
if (state.scopes[0].type === 'py') {
|
||||
var _indent = stream.indentation();
|
||||
var _indent_index = -1;
|
||||
for (var i = 0; i < state.scopes.length; ++i) {
|
||||
if (_indent === state.scopes[i].offset) {
|
||||
_indent_index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (_indent_index === -1) {
|
||||
return true;
|
||||
}
|
||||
while (state.scopes[0].offset !== _indent) {
|
||||
state.scopes.shift();
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
if (type === 'py') {
|
||||
state.scopes[0].offset = stream.indentation();
|
||||
return false;
|
||||
} else {
|
||||
if (state.scopes[0].type != type) {
|
||||
return true;
|
||||
}
|
||||
state.scopes.shift();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function tokenLexer(stream, state) {
|
||||
indentInfo = null;
|
||||
var style = state.tokenize(stream, state);
|
||||
var current = stream.current();
|
||||
|
||||
// Handle '.' connected identifiers
|
||||
if (current === '.') {
|
||||
style = stream.match(identifiers, false) ? null : ERRORCLASS;
|
||||
if (style === null && state.lastToken === 'meta') {
|
||||
// Apply 'meta' style to '.' connected identifiers when
|
||||
// appropriate.
|
||||
style = 'meta';
|
||||
}
|
||||
return style;
|
||||
}
|
||||
|
||||
// Handle decorators
|
||||
if (current === '@') {
|
||||
return stream.match(identifiers, false) ? 'meta' : ERRORCLASS;
|
||||
}
|
||||
|
||||
if ((style === 'variable' || style === 'builtin')
|
||||
&& state.lastToken === 'meta') {
|
||||
style = 'meta';
|
||||
}
|
||||
|
||||
// Handle scope changes.
|
||||
if (current === 'pass' || current === 'return') {
|
||||
state.dedent += 1;
|
||||
}
|
||||
if (current === 'lambda') state.lambda = true;
|
||||
if ((current === ':' && !state.lambda && state.scopes[0].type == 'py')
|
||||
|| indentInfo === 'indent') {
|
||||
indent(stream, state);
|
||||
}
|
||||
var delimiter_index = '[({'.indexOf(current);
|
||||
if (delimiter_index !== -1) {
|
||||
indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1));
|
||||
}
|
||||
if (indentInfo === 'dedent') {
|
||||
if (dedent(stream, state)) {
|
||||
return ERRORCLASS;
|
||||
}
|
||||
}
|
||||
delimiter_index = '])}'.indexOf(current);
|
||||
if (delimiter_index !== -1) {
|
||||
if (dedent(stream, state, current)) {
|
||||
return ERRORCLASS;
|
||||
}
|
||||
}
|
||||
if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'py') {
|
||||
if (state.scopes.length > 1) state.scopes.shift();
|
||||
state.dedent -= 1;
|
||||
}
|
||||
|
||||
return style;
|
||||
}
|
||||
|
||||
var external = {
|
||||
startState: function(basecolumn) {
|
||||
return {
|
||||
tokenize: tokenBase,
|
||||
scopes: [{offset:basecolumn || 0, type:'py'}],
|
||||
lastToken: null,
|
||||
lambda: false,
|
||||
dedent: 0
|
||||
};
|
||||
},
|
||||
|
||||
token: function(stream, state) {
|
||||
var style = tokenLexer(stream, state);
|
||||
|
||||
state.lastToken = style;
|
||||
|
||||
if (stream.eol() && stream.lambda) {
|
||||
state.lambda = false;
|
||||
}
|
||||
|
||||
return style;
|
||||
},
|
||||
|
||||
indent: function(state, textAfter) {
|
||||
if (state.tokenize != tokenBase) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return state.scopes[0].offset;
|
||||
}
|
||||
|
||||
};
|
||||
return external;
|
||||
});
|
||||
|
||||
CodeMirror.defineMIME("text/x-python", "python");
|
||||
4
book/common/ext/codelens/v3/js/d3.v2.min.js
vendored
Normal file
185
book/common/ext/codelens/v3/js/iframe-embed.js
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
/*
|
||||
|
||||
Online Python Tutor
|
||||
https://github.com/pgbovine/OnlinePythonTutor/
|
||||
|
||||
Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net)
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file
|
||||
|
||||
|
||||
// backend scripts to execute (Python 2 and 3 variants, if available)
|
||||
// make two copies of ../web_exec.py and give them the following names,
|
||||
// then change the first line (starting with #!) to the proper version
|
||||
// of the Python interpreter (i.e., Python 2 or Python 3).
|
||||
//var python2_backend_script = 'web_exec_py2.py';
|
||||
//var python3_backend_script = 'web_exec_py3.py';
|
||||
|
||||
// uncomment below if you're running on Google App Engine using the built-in app.yaml
|
||||
var python2_backend_script = 'exec';
|
||||
var python3_backend_script = null;
|
||||
|
||||
|
||||
var myVisualizer = null; // singleton ExecutionVisualizer instance
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
var preseededCode = $.bbq.getState('code');
|
||||
|
||||
var pyState = $.bbq.getState('py');
|
||||
var verticalStackBool = ($.bbq.getState('verticalStack') == 'true'); // boolean
|
||||
var heapPrimitivesBool = ($.bbq.getState('heapPrimitives') == 'true');
|
||||
var drawParentPointerBool = ($.bbq.getState('drawParentPointers') == 'true');
|
||||
var textRefsBool = ($.bbq.getState('textReferences') == 'true');
|
||||
var showOnlyOutputsBool = ($.bbq.getState('showOnlyOutputs') == 'true');
|
||||
|
||||
// set up all options in a JS object
|
||||
var options = {cumulative_mode: ($.bbq.getState('cumulative') == 'true'),
|
||||
heap_primitives: heapPrimitivesBool,
|
||||
show_only_outputs: showOnlyOutputsBool,
|
||||
py_crazy_mode: ($.bbq.getState('py') == '2crazy')};
|
||||
|
||||
|
||||
var preseededCurInstr = Number($.bbq.getState('curInstr'));
|
||||
if (!preseededCurInstr) {
|
||||
preseededCurInstr = 0;
|
||||
}
|
||||
|
||||
var backend_script = null;
|
||||
if (pyState == '2') {
|
||||
backend_script = python2_backend_script;
|
||||
}
|
||||
else if (pyState == '3') {
|
||||
backend_script = python3_backend_script;
|
||||
}
|
||||
|
||||
if (!backend_script) {
|
||||
alert('Error: This server is not configured to run Python ' + $('#pythonVersionSelector').val());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// David Pritchard's code for resizeContainer option ...
|
||||
var resizeContainer = ($.bbq.getState('resizeContainer') == 'true');
|
||||
|
||||
if (resizeContainer) {
|
||||
function findContainer() {
|
||||
var ifs = window.top.document.getElementsByTagName("iframe");
|
||||
for(var i = 0, len = ifs.length; i < len; i++) {
|
||||
var f = ifs[i];
|
||||
var fDoc = f.contentDocument || f.contentWindow.document;
|
||||
if(fDoc === document) {
|
||||
return f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var container = findContainer();
|
||||
|
||||
function resizeContainerNow() {
|
||||
$(container).height($("#vizDiv").height()+20);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
$.get(backend_script,
|
||||
{user_script : preseededCode,
|
||||
options_json: JSON.stringify(options)},
|
||||
function(dataFromBackend) {
|
||||
var trace = dataFromBackend.trace;
|
||||
|
||||
// don't enter visualize mode if there are killer errors:
|
||||
if (!trace ||
|
||||
(trace.length == 0) ||
|
||||
(trace[trace.length - 1].event == 'uncaught_exception')) {
|
||||
|
||||
if (trace.length == 1) {
|
||||
alert(trace[0].exception_msg);
|
||||
}
|
||||
else if (trace[trace.length - 1].exception_msg) {
|
||||
alert(trace[trace.length - 1].exception_msg);
|
||||
}
|
||||
else {
|
||||
alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)");
|
||||
}
|
||||
}
|
||||
else {
|
||||
var startingInstruction = 0;
|
||||
|
||||
// only do this at most ONCE, and then clear out preseededCurInstr
|
||||
if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0
|
||||
startingInstruction = preseededCurInstr;
|
||||
}
|
||||
|
||||
myVisualizer = new ExecutionVisualizer('vizDiv',
|
||||
dataFromBackend,
|
||||
{startingInstruction: preseededCurInstr,
|
||||
embeddedMode: true,
|
||||
verticalStack: verticalStackBool,
|
||||
disableHeapNesting: heapPrimitivesBool,
|
||||
drawParentPointers: drawParentPointerBool,
|
||||
textualMemoryLabels: textRefsBool,
|
||||
showOnlyOutputs: showOnlyOutputsBool,
|
||||
highlightLines: typeof $.bbq.getState("highlightLines") !== "undefined",
|
||||
pyCrazyMode: ($.bbq.getState('py') == '2crazy'),
|
||||
updateOutputCallback: (resizeContainer ? resizeContainerNow : null)
|
||||
});
|
||||
|
||||
// set keyboard bindings
|
||||
// VERY IMPORTANT to clear and reset this every time or
|
||||
// else the handlers might be bound multiple times
|
||||
$(document).unbind('keydown');
|
||||
$(document).keydown(function(k) {
|
||||
if (k.keyCode == 37) { // left arrow
|
||||
if (myVisualizer.stepBack()) {
|
||||
k.preventDefault(); // don't horizontally scroll the display
|
||||
}
|
||||
}
|
||||
else if (k.keyCode == 39) { // right arrow
|
||||
if (myVisualizer.stepForward()) {
|
||||
k.preventDefault(); // don't horizontally scroll the display
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
"json");
|
||||
|
||||
|
||||
// log a generic AJAX error handler
|
||||
$(document).ajaxError(function() {
|
||||
alert("Online Python Tutor server error (possibly due to memory/resource overload).");
|
||||
});
|
||||
|
||||
|
||||
// redraw connector arrows on window resize
|
||||
$(window).resize(function() {
|
||||
if (typeof appMode !== "undefined" && appMode == 'display') {
|
||||
myVisualizer.redrawConnectors();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
16
book/common/ext/codelens/v3/js/index.js
Normal file
16
book/common/ext/codelens/v3/js/jquery-1.6.min.js
vendored
Normal file
2
book/common/ext/codelens/v3/js/jquery-1.8.2.min.js
vendored
Normal file
21
book/common/ext/codelens/v3/js/jquery-ui-1.8.21.custom.min.js
vendored
Normal file
25
book/common/ext/codelens/v3/js/jquery-ui-1.8.24.custom.min.js
vendored
Normal file
18
book/common/ext/codelens/v3/js/jquery.ba-bbq.min.js
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
|
||||
* http://benalman.com/projects/jquery-bbq-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
|
||||
/*
|
||||
* jQuery hashchange event - v1.2 - 2/11/2010
|
||||
* http://benalman.com/projects/jquery-hashchange-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* http://benalman.com/about/license/
|
||||
*/
|
||||
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
|
||||
249
book/common/ext/codelens/v3/js/jquery.corner.js
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
/*!
|
||||
* jQuery corner plugin: simple corner rounding
|
||||
* Examples and documentation at: http://jquery.malsup.com/corner/
|
||||
* version 2.12 (23-MAY-2011)
|
||||
* Requires jQuery v1.3.2 or later
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
* Authors: Dave Methvin and Mike Alsup
|
||||
*/
|
||||
|
||||
/**
|
||||
* corner() takes a single string argument: $('#myDiv').corner("effect corners width")
|
||||
*
|
||||
* effect: name of the effect to apply, such as round, bevel, notch, bite, etc (default is round).
|
||||
* corners: one or more of: top, bottom, tr, tl, br, or bl. (default is all corners)
|
||||
* width: width of the effect; in the case of rounded corners this is the radius.
|
||||
* specify this value using the px suffix such as 10px (yes, it must be pixels).
|
||||
*/
|
||||
;(function($) {
|
||||
|
||||
var style = document.createElement('div').style,
|
||||
moz = style['MozBorderRadius'] !== undefined,
|
||||
webkit = style['WebkitBorderRadius'] !== undefined,
|
||||
radius = style['borderRadius'] !== undefined || style['BorderRadius'] !== undefined,
|
||||
mode = document.documentMode || 0,
|
||||
noBottomFold = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8),
|
||||
|
||||
expr = $.browser.msie && (function() {
|
||||
var div = document.createElement('div');
|
||||
try { div.style.setExpression('width','0+0'); div.style.removeExpression('width'); }
|
||||
catch(e) { return false; }
|
||||
return true;
|
||||
})();
|
||||
|
||||
$.support = $.support || {};
|
||||
$.support.borderRadius = moz || webkit || radius; // so you can do: if (!$.support.borderRadius) $('#myDiv').corner();
|
||||
|
||||
function sz(el, p) {
|
||||
return parseInt($.css(el,p))||0;
|
||||
};
|
||||
function hex2(s) {
|
||||
s = parseInt(s).toString(16);
|
||||
return ( s.length < 2 ) ? '0'+s : s;
|
||||
};
|
||||
function gpc(node) {
|
||||
while(node) {
|
||||
var v = $.css(node,'backgroundColor'), rgb;
|
||||
if (v && v != 'transparent' && v != 'rgba(0, 0, 0, 0)') {
|
||||
if (v.indexOf('rgb') >= 0) {
|
||||
rgb = v.match(/\d+/g);
|
||||
return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
if (node.nodeName.toLowerCase() == 'html')
|
||||
break;
|
||||
node = node.parentNode; // keep walking if transparent
|
||||
}
|
||||
return '#ffffff';
|
||||
};
|
||||
|
||||
function getWidth(fx, i, width) {
|
||||
switch(fx) {
|
||||
case 'round': return Math.round(width*(1-Math.cos(Math.asin(i/width))));
|
||||
case 'cool': return Math.round(width*(1+Math.cos(Math.asin(i/width))));
|
||||
case 'sharp': return width-i;
|
||||
case 'bite': return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
|
||||
case 'slide': return Math.round(width*(Math.atan2(i,width/i)));
|
||||
case 'jut': return Math.round(width*(Math.atan2(width,(width-i-1))));
|
||||
case 'curl': return Math.round(width*(Math.atan(i)));
|
||||
case 'tear': return Math.round(width*(Math.cos(i)));
|
||||
case 'wicked': return Math.round(width*(Math.tan(i)));
|
||||
case 'long': return Math.round(width*(Math.sqrt(i)));
|
||||
case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
|
||||
case 'dogfold':
|
||||
case 'dog': return (i&1) ? (i+1) : width;
|
||||
case 'dog2': return (i&2) ? (i+1) : width;
|
||||
case 'dog3': return (i&3) ? (i+1) : width;
|
||||
case 'fray': return (i%2)*width;
|
||||
case 'notch': return width;
|
||||
case 'bevelfold':
|
||||
case 'bevel': return i+1;
|
||||
case 'steep': return i/2 + 1;
|
||||
case 'invsteep':return (width-i)/2+1;
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.corner = function(options) {
|
||||
// in 1.3+ we can fix mistakes with the ready state
|
||||
if (this.length == 0) {
|
||||
if (!$.isReady && this.selector) {
|
||||
var s = this.selector, c = this.context;
|
||||
$(function() {
|
||||
$(s,c).corner(options);
|
||||
});
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
return this.each(function(index){
|
||||
var $this = $(this),
|
||||
// meta values override options
|
||||
o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase(),
|
||||
keep = /keep/.test(o), // keep borders?
|
||||
cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]), // corner color
|
||||
sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]), // strip color
|
||||
width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10, // corner width
|
||||
re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog|invsteep|steep/,
|
||||
fx = ((o.match(re)||['round'])[0]),
|
||||
fold = /dogfold|bevelfold/.test(o),
|
||||
edges = { T:0, B:1 },
|
||||
opts = {
|
||||
TL: /top|tl|left/.test(o), TR: /top|tr|right/.test(o),
|
||||
BL: /bottom|bl|left/.test(o), BR: /bottom|br|right/.test(o)
|
||||
},
|
||||
// vars used in func later
|
||||
strip, pad, cssHeight, j, bot, d, ds, bw, i, w, e, c, common, $horz;
|
||||
|
||||
if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
|
||||
opts = { TL:1, TR:1, BL:1, BR:1 };
|
||||
|
||||
// support native rounding
|
||||
if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) {
|
||||
if (opts.TL)
|
||||
$this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px');
|
||||
if (opts.TR)
|
||||
$this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px');
|
||||
if (opts.BL)
|
||||
$this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px');
|
||||
if (opts.BR)
|
||||
$this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px');
|
||||
return;
|
||||
}
|
||||
|
||||
strip = document.createElement('div');
|
||||
$(strip).css({
|
||||
overflow: 'hidden',
|
||||
height: '1px',
|
||||
minHeight: '1px',
|
||||
fontSize: '1px',
|
||||
backgroundColor: sc || 'transparent',
|
||||
borderStyle: 'solid'
|
||||
});
|
||||
|
||||
pad = {
|
||||
T: parseInt($.css(this,'paddingTop'))||0, R: parseInt($.css(this,'paddingRight'))||0,
|
||||
B: parseInt($.css(this,'paddingBottom'))||0, L: parseInt($.css(this,'paddingLeft'))||0
|
||||
};
|
||||
|
||||
if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE
|
||||
if (!keep) this.style.border = 'none';
|
||||
strip.style.borderColor = cc || gpc(this.parentNode);
|
||||
cssHeight = $(this).outerHeight();
|
||||
|
||||
for (j in edges) {
|
||||
bot = edges[j];
|
||||
// only add stips if needed
|
||||
if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
|
||||
strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
|
||||
d = document.createElement('div');
|
||||
$(d).addClass('jquery-corner');
|
||||
ds = d.style;
|
||||
|
||||
bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);
|
||||
|
||||
if (bot && cssHeight != 'auto') {
|
||||
if ($.css(this,'position') == 'static')
|
||||
this.style.position = 'relative';
|
||||
ds.position = 'absolute';
|
||||
ds.bottom = ds.left = ds.padding = ds.margin = '0';
|
||||
if (expr)
|
||||
ds.setExpression('width', 'this.parentNode.offsetWidth');
|
||||
else
|
||||
ds.width = '100%';
|
||||
}
|
||||
else if (!bot && $.browser.msie) {
|
||||
if ($.css(this,'position') == 'static')
|
||||
this.style.position = 'relative';
|
||||
ds.position = 'absolute';
|
||||
ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
|
||||
|
||||
// fix ie6 problem when blocked element has a border width
|
||||
if (expr) {
|
||||
bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth');
|
||||
ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"');
|
||||
}
|
||||
else
|
||||
ds.width = '100%';
|
||||
}
|
||||
else {
|
||||
ds.position = 'relative';
|
||||
ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' :
|
||||
(pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';
|
||||
}
|
||||
|
||||
for (i=0; i < width; i++) {
|
||||
w = Math.max(0,getWidth(fx,i, width));
|
||||
e = strip.cloneNode(false);
|
||||
e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
|
||||
bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
|
||||
}
|
||||
|
||||
if (fold && $.support.boxModel) {
|
||||
if (bot && noBottomFold) continue;
|
||||
for (c in opts) {
|
||||
if (!opts[c]) continue;
|
||||
if (bot && (c == 'TL' || c == 'TR')) continue;
|
||||
if (!bot && (c == 'BL' || c == 'BR')) continue;
|
||||
|
||||
common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor };
|
||||
$horz = $('<div/>').css(common).css({ width: width + 'px', height: '1px' });
|
||||
switch(c) {
|
||||
case 'TL': $horz.css({ bottom: 0, left: 0 }); break;
|
||||
case 'TR': $horz.css({ bottom: 0, right: 0 }); break;
|
||||
case 'BL': $horz.css({ top: 0, left: 0 }); break;
|
||||
case 'BR': $horz.css({ top: 0, right: 0 }); break;
|
||||
}
|
||||
d.appendChild($horz[0]);
|
||||
|
||||
var $vert = $('<div/>').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' });
|
||||
switch(c) {
|
||||
case 'TL': $vert.css({ left: width }); break;
|
||||
case 'TR': $vert.css({ right: width }); break;
|
||||
case 'BL': $vert.css({ left: width }); break;
|
||||
case 'BR': $vert.css({ right: width }); break;
|
||||
}
|
||||
d.appendChild($vert[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.uncorner = function() {
|
||||
if (radius || moz || webkit)
|
||||
this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0);
|
||||
$('div.jquery-corner', this).remove();
|
||||
return this;
|
||||
};
|
||||
|
||||
// expose options
|
||||
$.fn.corner.defaults = {
|
||||
useNative: true, // true if plugin should attempt to use native browser support for border radius rounding
|
||||
metaAttr: 'data-corner' // name of meta attribute to use for options
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
1
book/common/ext/codelens/v3/js/jquery.jsPlumb-1.3.10-all-min.js
vendored
Normal file
1
book/common/ext/codelens/v3/js/jquery.jsPlumb-1.3.15-all-min.js
vendored
Normal file
2
book/common/ext/codelens/v3/js/jquery.qtip.min.js
vendored
Normal file
26
book/common/ext/codelens/v3/js/jquery.simplemodal.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SimpleModal 1.4.3 - jQuery Plugin
|
||||
* http://simplemodal.com/
|
||||
* Copyright (c) 2012 Eric Martin
|
||||
* Licensed under MIT and GPL
|
||||
* Date: Sat, Sep 8 2012 07:52:31 -0700
|
||||
*/
|
||||
(function(b){"function"===typeof define&&define.amd?define(["jquery"],b):b(jQuery)})(function(b){var j=[],l=b(document),m=b.browser.msie&&6===parseInt(b.browser.version)&&"object"!==typeof window.XMLHttpRequest,o=b.browser.msie&&7===parseInt(b.browser.version),n=null,k=b(window),h=[];b.modal=function(a,d){return b.modal.impl.init(a,d)};b.modal.close=function(){b.modal.impl.close()};b.modal.focus=function(a){b.modal.impl.focus(a)};b.modal.setContainerDimensions=function(){b.modal.impl.setContainerDimensions()};
|
||||
b.modal.setPosition=function(){b.modal.impl.setPosition()};b.modal.update=function(a,d){b.modal.impl.update(a,d)};b.fn.modal=function(a){return b.modal.impl.init(this,a)};b.modal.defaults={appendTo:"body",focus:!0,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:null,minWidth:null,maxHeight:null,maxWidth:null,autoResize:!1,autoPosition:!0,zIndex:1E3,close:!0,closeHTML:'<a class="modalCloseImg" title="Close"></a>',
|
||||
closeClass:"simplemodal-close",escClose:!0,overlayClose:!1,fixed:!0,position:null,persist:!1,modal:!0,onOpen:null,onShow:null,onClose:null};b.modal.impl={d:{},init:function(a,d){if(this.d.data)return!1;n=b.browser.msie&&!b.support.boxModel;this.o=b.extend({},b.modal.defaults,d);this.zIndex=this.o.zIndex;this.occb=!1;if("object"===typeof a){if(a=a instanceof b?a:b(a),this.d.placeholder=!1,0<a.parent().parent().size()&&(a.before(b("<span></span>").attr("id","simplemodal-placeholder").css({display:"none"})),
|
||||
this.d.placeholder=!0,this.display=a.css("display"),!this.o.persist))this.d.orig=a.clone(!0)}else if("string"===typeof a||"number"===typeof a)a=b("<div></div>").html(a);else return alert("SimpleModal Error: Unsupported data type: "+typeof a),this;this.create(a);this.open();b.isFunction(this.o.onShow)&&this.o.onShow.apply(this,[this.d]);return this},create:function(a){this.getDimensions();if(this.o.modal&&m)this.d.iframe=b('<iframe src="javascript:false;"></iframe>').css(b.extend(this.o.iframeCss,
|
||||
{display:"none",opacity:0,position:"fixed",height:h[0],width:h[1],zIndex:this.o.zIndex,top:0,left:0})).appendTo(this.o.appendTo);this.d.overlay=b("<div></div>").attr("id",this.o.overlayId).addClass("simplemodal-overlay").css(b.extend(this.o.overlayCss,{display:"none",opacity:this.o.opacity/100,height:this.o.modal?j[0]:0,width:this.o.modal?j[1]:0,position:"fixed",left:0,top:0,zIndex:this.o.zIndex+1})).appendTo(this.o.appendTo);this.d.container=b("<div></div>").attr("id",this.o.containerId).addClass("simplemodal-container").css(b.extend({position:this.o.fixed?
|
||||
"fixed":"absolute"},this.o.containerCss,{display:"none",zIndex:this.o.zIndex+2})).append(this.o.close&&this.o.closeHTML?b(this.o.closeHTML).addClass(this.o.closeClass):"").appendTo(this.o.appendTo);this.d.wrap=b("<div></div>").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(this.d.container);this.d.data=a.attr("id",a.attr("id")||this.o.dataId).addClass("simplemodal-data").css(b.extend(this.o.dataCss,{display:"none"})).appendTo("body");this.setContainerDimensions();
|
||||
this.d.data.appendTo(this.d.wrap);(m||n)&&this.fixIE()},bindEvents:function(){var a=this;b("."+a.o.closeClass).bind("click.simplemodal",function(b){b.preventDefault();a.close()});a.o.modal&&a.o.close&&a.o.overlayClose&&a.d.overlay.bind("click.simplemodal",function(b){b.preventDefault();a.close()});l.bind("keydown.simplemodal",function(b){a.o.modal&&9===b.keyCode?a.watchTab(b):a.o.close&&a.o.escClose&&27===b.keyCode&&(b.preventDefault(),a.close())});k.bind("resize.simplemodal orientationchange.simplemodal",
|
||||
function(){a.getDimensions();a.o.autoResize?a.setContainerDimensions():a.o.autoPosition&&a.setPosition();m||n?a.fixIE():a.o.modal&&(a.d.iframe&&a.d.iframe.css({height:h[0],width:h[1]}),a.d.overlay.css({height:j[0],width:j[1]}))})},unbindEvents:function(){b("."+this.o.closeClass).unbind("click.simplemodal");l.unbind("keydown.simplemodal");k.unbind(".simplemodal");this.d.overlay.unbind("click.simplemodal")},fixIE:function(){var a=this.o.position;b.each([this.d.iframe||null,!this.o.modal?null:this.d.overlay,
|
||||
"fixed"===this.d.container.css("position")?this.d.container:null],function(b,f){if(f){var g=f[0].style;g.position="absolute";if(2>b)g.removeExpression("height"),g.removeExpression("width"),g.setExpression("height",'document.body.scrollHeight > document.body.clientHeight ? document.body.scrollHeight : document.body.clientHeight + "px"'),g.setExpression("width",'document.body.scrollWidth > document.body.clientWidth ? document.body.scrollWidth : document.body.clientWidth + "px"');else{var c,e;a&&a.constructor===
|
||||
Array?(c=a[0]?"number"===typeof a[0]?a[0].toString():a[0].replace(/px/,""):f.css("top").replace(/px/,""),c=-1===c.indexOf("%")?c+' + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"':parseInt(c.replace(/%/,""))+' * ((document.documentElement.clientHeight || document.body.clientHeight) / 100) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',a[1]&&(e="number"===typeof a[1]?
|
||||
a[1].toString():a[1].replace(/px/,""),e=-1===e.indexOf("%")?e+' + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"':parseInt(e.replace(/%/,""))+' * ((document.documentElement.clientWidth || document.body.clientWidth) / 100) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"')):(c='(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (t = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"',
|
||||
e='(document.documentElement.clientWidth || document.body.clientWidth) / 2 - (this.offsetWidth / 2) + (t = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px"');g.removeExpression("top");g.removeExpression("left");g.setExpression("top",c);g.setExpression("left",e)}}})},focus:function(a){var d=this,a=a&&-1!==b.inArray(a,["first","last"])?a:"first",f=b(":input:enabled:visible:"+a,d.d.wrap);setTimeout(function(){0<f.length?f.focus():d.d.wrap.focus()},
|
||||
10)},getDimensions:function(){var a="undefined"===typeof window.innerHeight?k.height():window.innerHeight;j=[l.height(),l.width()];h=[a,k.width()]},getVal:function(a,b){return a?"number"===typeof a?a:"auto"===a?0:0<a.indexOf("%")?parseInt(a.replace(/%/,""))/100*("h"===b?h[0]:h[1]):parseInt(a.replace(/px/,"")):null},update:function(a,b){if(!this.d.data)return!1;this.d.origHeight=this.getVal(a,"h");this.d.origWidth=this.getVal(b,"w");this.d.data.hide();a&&this.d.container.css("height",a);b&&this.d.container.css("width",
|
||||
b);this.setContainerDimensions();this.d.data.show();this.o.focus&&this.focus();this.unbindEvents();this.bindEvents()},setContainerDimensions:function(){var a=m||o,d=this.d.origHeight?this.d.origHeight:b.browser.opera?this.d.container.height():this.getVal(a?this.d.container[0].currentStyle.height:this.d.container.css("height"),"h"),a=this.d.origWidth?this.d.origWidth:b.browser.opera?this.d.container.width():this.getVal(a?this.d.container[0].currentStyle.width:this.d.container.css("width"),"w"),f=this.d.data.outerHeight(!0),
|
||||
g=this.d.data.outerWidth(!0);this.d.origHeight=this.d.origHeight||d;this.d.origWidth=this.d.origWidth||a;var c=this.o.maxHeight?this.getVal(this.o.maxHeight,"h"):null,e=this.o.maxWidth?this.getVal(this.o.maxWidth,"w"):null,c=c&&c<h[0]?c:h[0],e=e&&e<h[1]?e:h[1],i=this.o.minHeight?this.getVal(this.o.minHeight,"h"):"auto",d=d?this.o.autoResize&&d>c?c:d<i?i:d:f?f>c?c:this.o.minHeight&&"auto"!==i&&f<i?i:f:i,c=this.o.minWidth?this.getVal(this.o.minWidth,"w"):"auto",a=a?this.o.autoResize&&a>e?e:a<c?c:a:
|
||||
g?g>e?e:this.o.minWidth&&"auto"!==c&&g<c?c:g:c;this.d.container.css({height:d,width:a});this.d.wrap.css({overflow:f>d||g>a?"auto":"visible"});this.o.autoPosition&&this.setPosition()},setPosition:function(){var a,b;a=h[0]/2-this.d.container.outerHeight(!0)/2;b=h[1]/2-this.d.container.outerWidth(!0)/2;var f="fixed"!==this.d.container.css("position")?k.scrollTop():0;this.o.position&&"[object Array]"===Object.prototype.toString.call(this.o.position)?(a=f+(this.o.position[0]||a),b=this.o.position[1]||
|
||||
b):a=f+a;this.d.container.css({left:b,top:a})},watchTab:function(a){if(0<b(a.target).parents(".simplemodal-container").length){if(this.inputs=b(":input:enabled:visible:first, :input:enabled:visible:last",this.d.data[0]),!a.shiftKey&&a.target===this.inputs[this.inputs.length-1]||a.shiftKey&&a.target===this.inputs[0]||0===this.inputs.length)a.preventDefault(),this.focus(a.shiftKey?"last":"first")}else a.preventDefault(),this.focus()},open:function(){this.d.iframe&&this.d.iframe.show();b.isFunction(this.o.onOpen)?
|
||||
this.o.onOpen.apply(this,[this.d]):(this.d.overlay.show(),this.d.container.show(),this.d.data.show());this.o.focus&&this.focus();this.bindEvents()},close:function(){if(!this.d.data)return!1;this.unbindEvents();if(b.isFunction(this.o.onClose)&&!this.occb)this.occb=!0,this.o.onClose.apply(this,[this.d]);else{if(this.d.placeholder){var a=b("#simplemodal-placeholder");this.o.persist?a.replaceWith(this.d.data.removeClass("simplemodal-data").css("display",this.display)):(this.d.data.hide().remove(),a.replaceWith(this.d.orig))}else this.d.data.hide().remove();
|
||||
this.d.container.hide().remove();this.d.overlay.hide();this.d.iframe&&this.d.iframe.hide().remove();this.d.overlay.remove();this.d={}}}}});
|
||||
631
book/common/ext/codelens/v3/js/opt-frontend.js
Normal file
|
|
@ -0,0 +1,631 @@
|
|||
/*
|
||||
|
||||
Online Python Tutor
|
||||
https://github.com/pgbovine/OnlinePythonTutor/
|
||||
|
||||
Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net)
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file
|
||||
|
||||
|
||||
// backend scripts to execute (Python 2 and 3 variants, if available)
|
||||
// make two copies of ../web_exec.py and give them the following names,
|
||||
// then change the first line (starting with #!) to the proper version
|
||||
// of the Python interpreter (i.e., Python 2 or Python 3).
|
||||
// Note that your hosting provider might have stringent rules for what
|
||||
// kind of scripts are allowed to execute. For instance, my provider
|
||||
// (Webfaction) seems to let scripts execute only if permissions are
|
||||
// something like:
|
||||
// -rwxr-xr-x 1 pgbovine pgbovine 2.5K Jul 5 22:46 web_exec_py2.py*
|
||||
// (most notably, only the owner of the file should have write
|
||||
// permissions)
|
||||
//var python2_backend_script = 'web_exec_py2.py';
|
||||
//var python3_backend_script = 'web_exec_py3.py';
|
||||
|
||||
// uncomment below if you're running on Google App Engine using the built-in app.yaml
|
||||
var python2_backend_script = 'exec';
|
||||
var python3_backend_script = null;
|
||||
|
||||
// KRAZY experimental KODE!!! Use a custom hacked CPython interpreter
|
||||
var python2crazy_backend_script = 'web_exec_py2-crazy.py';
|
||||
// On Google App Engine, simply run dev_appserver.py with the
|
||||
// crazy custom CPython interpreter to get 2crazy
|
||||
//var python2crazy_backend_script = 'exec';
|
||||
|
||||
var appMode = 'edit'; // 'edit', 'display', or 'display_no_frills'
|
||||
|
||||
var preseededCode = null; // if you passed in a 'code=<code string>' in the URL, then set this var
|
||||
var preseededCurInstr = null; // if you passed in a 'curInstr=<number>' in the URL, then set this var
|
||||
|
||||
var rawInputLst = []; // a list of strings inputted by the user in response to raw_input or mouse_input events
|
||||
|
||||
var myVisualizer = null; // singleton ExecutionVisualizer instance
|
||||
|
||||
|
||||
function enterEditMode() {
|
||||
$.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */);
|
||||
}
|
||||
|
||||
function enterDisplayNoFrillsMode() {
|
||||
$.bbq.pushState({ mode: 'display_no_frills' }, 2 /* completely override other hash strings to keep URL clean */);
|
||||
}
|
||||
|
||||
var pyInputCodeMirror; // CodeMirror object that contains the input text
|
||||
|
||||
function setCodeMirrorVal(dat) {
|
||||
pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */);
|
||||
$('#urlOutput,#embedCodeOutput').val('');
|
||||
|
||||
// also scroll to top to make the UI more usable on smaller monitors
|
||||
$(document).scrollTop(0);
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$("#embedLinkDiv").hide();
|
||||
|
||||
pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), {
|
||||
mode: 'python',
|
||||
lineNumbers: true,
|
||||
tabSize: 4,
|
||||
indentUnit: 4,
|
||||
// convert tab into four spaces:
|
||||
extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}}
|
||||
});
|
||||
|
||||
pyInputCodeMirror.setSize(null, '420px');
|
||||
|
||||
|
||||
|
||||
// be friendly to the browser's forward and back buttons
|
||||
// thanks to http://benalman.com/projects/jquery-bbq-plugin/
|
||||
$(window).bind("hashchange", function(e) {
|
||||
appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode
|
||||
|
||||
if (appMode === undefined || appMode == 'edit') {
|
||||
$("#pyInputPane").show();
|
||||
$("#pyOutputPane").hide();
|
||||
$("#embedLinkDiv").hide();
|
||||
|
||||
// destroy all annotation bubbles (NB: kludgy)
|
||||
if (myVisualizer) {
|
||||
myVisualizer.destroyAllAnnotationBubbles();
|
||||
}
|
||||
}
|
||||
else if (appMode == 'display') {
|
||||
$("#pyInputPane").hide();
|
||||
$("#pyOutputPane").show();
|
||||
|
||||
$("#embedLinkDiv").show();
|
||||
|
||||
$('#executeBtn').html("Visualize execution");
|
||||
$('#executeBtn').attr('disabled', false);
|
||||
|
||||
|
||||
// do this AFTER making #pyOutputPane visible, or else
|
||||
// jsPlumb connectors won't render properly
|
||||
myVisualizer.updateOutput();
|
||||
|
||||
// customize edit button click functionality AFTER rendering (NB: awkward!)
|
||||
$('#pyOutputPane #editCodeLinkDiv').show();
|
||||
$('#pyOutputPane #editBtn').click(function() {
|
||||
enterEditMode();
|
||||
});
|
||||
}
|
||||
else if (appMode == 'display_no_frills') {
|
||||
$("#pyInputPane").hide();
|
||||
$("#pyOutputPane").show();
|
||||
$("#embedLinkDiv").show();
|
||||
}
|
||||
else {
|
||||
assert(false);
|
||||
}
|
||||
|
||||
$('#urlOutput,#embedCodeOutput').val(''); // clear to avoid stale values
|
||||
});
|
||||
|
||||
|
||||
function executeCode(forceStartingInstr) {
|
||||
var backend_script = null;
|
||||
if ($('#pythonVersionSelector').val() == '2') {
|
||||
backend_script = python2_backend_script;
|
||||
}
|
||||
else if ($('#pythonVersionSelector').val() == '3') {
|
||||
backend_script = python3_backend_script;
|
||||
}
|
||||
// experimental KRAZY MODE!!!
|
||||
else if ($('#pythonVersionSelector').val() == '2crazy') {
|
||||
backend_script = python2crazy_backend_script;
|
||||
}
|
||||
|
||||
if (!backend_script) {
|
||||
alert('Error: This server is not configured to run Python ' + $('#pythonVersionSelector').val());
|
||||
return;
|
||||
}
|
||||
|
||||
$('#executeBtn').html("Please wait ... processing your code");
|
||||
$('#executeBtn').attr('disabled', true);
|
||||
$("#pyOutputPane").hide();
|
||||
$("#embedLinkDiv").hide();
|
||||
|
||||
|
||||
// set up all options in a JS object
|
||||
var options = {cumulative_mode: ($('#cumulativeModeSelector').val() == 'true'),
|
||||
heap_primitives: ($('#heapPrimitivesSelector').val() == 'true'),
|
||||
show_only_outputs: ($('#showOnlyOutputsSelector').val() == 'true'),
|
||||
py_crazy_mode: ($('#pythonVersionSelector').val() == '2crazy')};
|
||||
|
||||
$.get(backend_script,
|
||||
{user_script : pyInputCodeMirror.getValue(),
|
||||
raw_input_json: rawInputLst.length > 0 ? JSON.stringify(rawInputLst) : '',
|
||||
options_json: JSON.stringify(options)},
|
||||
function(dataFromBackend) {
|
||||
var trace = dataFromBackend.trace;
|
||||
|
||||
// don't enter visualize mode if there are killer errors:
|
||||
if (!trace ||
|
||||
(trace.length == 0) ||
|
||||
(trace[trace.length - 1].event == 'uncaught_exception')) {
|
||||
|
||||
if (trace.length == 1) {
|
||||
var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */
|
||||
if (errorLineNo !== undefined) {
|
||||
// highlight the faulting line in pyInputCodeMirror
|
||||
pyInputCodeMirror.focus();
|
||||
pyInputCodeMirror.setCursor(errorLineNo, 0);
|
||||
pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine');
|
||||
|
||||
pyInputCodeMirror.setOption('onChange', function() {
|
||||
pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal
|
||||
pyInputCodeMirror.setOption('onChange', null); // cancel
|
||||
});
|
||||
}
|
||||
|
||||
alert(trace[0].exception_msg);
|
||||
}
|
||||
else if (trace[trace.length - 1].exception_msg) {
|
||||
alert(trace[trace.length - 1].exception_msg);
|
||||
}
|
||||
else {
|
||||
alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)");
|
||||
}
|
||||
|
||||
$('#executeBtn').html("Visualize execution");
|
||||
$('#executeBtn').attr('disabled', false);
|
||||
}
|
||||
else {
|
||||
var startingInstruction = 0;
|
||||
|
||||
// only do this at most ONCE, and then clear out preseededCurInstr
|
||||
if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0
|
||||
startingInstruction = preseededCurInstr;
|
||||
preseededCurInstr = null;
|
||||
}
|
||||
|
||||
// forceStartingInstr overrides everything else
|
||||
if (forceStartingInstr !== undefined) {
|
||||
startingInstruction = forceStartingInstr;
|
||||
}
|
||||
|
||||
myVisualizer = new ExecutionVisualizer('pyOutputPane',
|
||||
dataFromBackend,
|
||||
{startingInstruction: startingInstruction,
|
||||
updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');},
|
||||
// tricky: selector 'true' and 'false' values are strings!
|
||||
disableHeapNesting: ($('#heapPrimitivesSelector').val() == 'true'),
|
||||
drawParentPointers: ($('#drawParentPointerSelector').val() == 'true'),
|
||||
textualMemoryLabels: ($('#textualMemoryLabelsSelector').val() == 'true'),
|
||||
showOnlyOutputs: ($('#showOnlyOutputsSelector').val() == 'true'),
|
||||
executeCodeWithRawInputFunc: executeCodeWithRawInput,
|
||||
|
||||
// undocumented experimental modes:
|
||||
pyCrazyMode: ($('#pythonVersionSelector').val() == '2crazy'),
|
||||
//allowEditAnnotations: true,
|
||||
});
|
||||
|
||||
|
||||
// set keyboard bindings
|
||||
// VERY IMPORTANT to clear and reset this every time or
|
||||
// else the handlers might be bound multiple times
|
||||
$(document).unbind('keydown');
|
||||
$(document).keydown(function(k) {
|
||||
if (k.keyCode == 37) { // left arrow
|
||||
if (myVisualizer.stepBack()) {
|
||||
k.preventDefault(); // don't horizontally scroll the display
|
||||
}
|
||||
}
|
||||
else if (k.keyCode == 39) { // right arrow
|
||||
if (myVisualizer.stepForward()) {
|
||||
k.preventDefault(); // don't horizontally scroll the display
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// also scroll to top to make the UI more usable on smaller monitors
|
||||
$(document).scrollTop(0);
|
||||
|
||||
$.bbq.pushState({ mode: 'display' }, 2 /* completely override other hash strings to keep URL clean */);
|
||||
}
|
||||
},
|
||||
"json");
|
||||
}
|
||||
|
||||
function executeCodeFromScratch() {
|
||||
// reset these globals
|
||||
rawInputLst = [];
|
||||
|
||||
executeCode();
|
||||
}
|
||||
|
||||
function executeCodeWithRawInput(rawInputStr, curInstr) {
|
||||
enterDisplayNoFrillsMode();
|
||||
|
||||
// set some globals
|
||||
rawInputLst.push(rawInputStr);
|
||||
|
||||
executeCode(curInstr);
|
||||
}
|
||||
|
||||
$("#executeBtn").attr('disabled', false);
|
||||
$("#executeBtn").click(executeCodeFromScratch);
|
||||
|
||||
|
||||
// canned examples
|
||||
|
||||
$("#tutorialExampleLink").click(function() {
|
||||
$.get("example-code/py_tutorial.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#strtokExampleLink").click(function() {
|
||||
$.get("example-code/strtok.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#listCompLink").click(function() {
|
||||
$.get("example-code/list-comp.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#fibonacciExampleLink").click(function() {
|
||||
$.get("example-code/fib.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#memoFibExampleLink").click(function() {
|
||||
$.get("example-code/memo_fib.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#factExampleLink").click(function() {
|
||||
$.get("example-code/fact.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#filterExampleLink").click(function() {
|
||||
$.get("example-code/filter.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#insSortExampleLink").click(function() {
|
||||
$.get("example-code/ins_sort.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#aliasExampleLink").click(function() {
|
||||
$.get("example-code/aliasing.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#happyExampleLink").click(function() {
|
||||
$.get("example-code/happy.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#newtonExampleLink").click(function() {
|
||||
$.get("example-code/sqrt.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#oopSmallExampleLink").click(function() {
|
||||
$.get("example-code/oop_small.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#mapExampleLink").click(function() {
|
||||
$.get("example-code/map.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#rawInputExampleLink").click(function() {
|
||||
$.get("example-code/raw_input.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#oop1ExampleLink").click(function() {
|
||||
$.get("example-code/oop_1.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#oop2ExampleLink").click(function() {
|
||||
$.get("example-code/oop_2.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#inheritanceExampleLink").click(function() {
|
||||
$.get("example-code/oop_inherit.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#sumExampleLink").click(function() {
|
||||
$.get("example-code/sum.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#pwGcdLink").click(function() {
|
||||
$.get("example-code/wentworth_gcd.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#pwSumListLink").click(function() {
|
||||
$.get("example-code/wentworth_sumList.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#towersOfHanoiLink").click(function() {
|
||||
$.get("example-code/towers_of_hanoi.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#pwTryFinallyLink").click(function() {
|
||||
$.get("example-code/wentworth_try_finally.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#sumCubesLink").click(function() {
|
||||
$.get("example-code/sum-cubes.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#decoratorsLink").click(function() {
|
||||
$.get("example-code/decorators.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#genPrimesLink").click(function() {
|
||||
$.get("example-code/gen_primes.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#genExprLink").click(function() {
|
||||
$.get("example-code/genexpr.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$('#closure1Link').click(function() {
|
||||
$.get("example-code/closures/closure1.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#closure2Link').click(function() {
|
||||
$.get("example-code/closures/closure2.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#closure3Link').click(function() {
|
||||
$.get("example-code/closures/closure3.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#closure4Link').click(function() {
|
||||
$.get("example-code/closures/closure4.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#closure5Link').click(function() {
|
||||
$.get("example-code/closures/closure5.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#lambdaParamLink').click(function() {
|
||||
$.get("example-code/closures/lambda-param.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#tortureLink').click(function() {
|
||||
$.get("example-code/closures/student-torture.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
|
||||
$('#aliasing1Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing1.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing2Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing2.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing3Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing3.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing4Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing4.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing5Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing5.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing6Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing6.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing7Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing7.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#aliasing8Link').click(function() {
|
||||
$.get("example-code/aliasing/aliasing8.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$('#ll1Link').click(function() {
|
||||
$.get("example-code/linked-lists/ll1.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#ll2Link').click(function() {
|
||||
$.get("example-code/linked-lists/ll2.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
$('#sumListLink').click(function() {
|
||||
$.get("example-code/sum-list.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#varargsLink').click(function() {
|
||||
$.get("example-code/varargs.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#forElseLink').click(function() {
|
||||
$.get("example-code/for-else.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#nonlocalLink').click(function() {
|
||||
$.get("example-code/nonlocal.txt", setCodeMirrorVal);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
// handle hash parameters passed in when loading the page
|
||||
preseededCode = $.bbq.getState('code');
|
||||
if (preseededCode) {
|
||||
setCodeMirrorVal(preseededCode);
|
||||
}
|
||||
else {
|
||||
// select a canned example on start-up:
|
||||
$("#aliasExampleLink").trigger('click');
|
||||
}
|
||||
|
||||
// parse query string options ...
|
||||
// ugh, ugly tristate due to the possibility of them being undefined
|
||||
var cumulativeState = $.bbq.getState('cumulative');
|
||||
if (cumulativeState !== undefined) {
|
||||
$('#cumulativeModeSelector').val(cumulativeState);
|
||||
}
|
||||
var heapPrimitivesState = $.bbq.getState('heapPrimitives');
|
||||
if (heapPrimitivesState !== undefined) {
|
||||
$('#heapPrimitivesSelector').val(heapPrimitivesState);
|
||||
}
|
||||
var drawParentPointerState = $.bbq.getState('drawParentPointers');
|
||||
if (drawParentPointerState !== undefined) {
|
||||
$('#drawParentPointerSelector').val(drawParentPointerState);
|
||||
}
|
||||
var textRefsState = $.bbq.getState('textReferences');
|
||||
if (textRefsState !== undefined) {
|
||||
$('#textualMemoryLabelsSelector').val(textRefsState);
|
||||
}
|
||||
var showOnlyOutputsState = $.bbq.getState('showOnlyOutputs');
|
||||
if (showOnlyOutputsState !== undefined) {
|
||||
$('#showOnlyOutputsSelector').val(showOnlyOutputsState);
|
||||
}
|
||||
|
||||
var pyState = $.bbq.getState('py');
|
||||
if (pyState !== undefined) {
|
||||
$('#pythonVersionSelector').val(pyState);
|
||||
}
|
||||
|
||||
appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode
|
||||
if ((appMode == "display") && preseededCode /* jump to display only with pre-seeded code */) {
|
||||
preseededCurInstr = Number($.bbq.getState('curInstr'));
|
||||
$("#executeBtn").trigger('click');
|
||||
}
|
||||
else {
|
||||
if (appMode === undefined) {
|
||||
// default mode is 'edit', don't trigger a "hashchange" event
|
||||
appMode = 'edit';
|
||||
}
|
||||
else {
|
||||
// fail-soft by killing all passed-in hashes and triggering a "hashchange"
|
||||
// event, which will then go to 'edit' mode
|
||||
$.bbq.removeState();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// log a generic AJAX error handler
|
||||
$(document).ajaxError(function() {
|
||||
alert("Server error (possibly due to memory/resource overload). Report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)");
|
||||
|
||||
$('#executeBtn').html("Visualize execution");
|
||||
$('#executeBtn').attr('disabled', false);
|
||||
});
|
||||
|
||||
|
||||
// redraw connector arrows on window resize
|
||||
$(window).resize(function() {
|
||||
if (appMode == 'display') {
|
||||
myVisualizer.redrawConnectors();
|
||||
}
|
||||
});
|
||||
|
||||
$('#genUrlBtn').bind('click', function() {
|
||||
var myArgs = {code: pyInputCodeMirror.getValue(),
|
||||
mode: appMode,
|
||||
cumulative: $('#cumulativeModeSelector').val(),
|
||||
heapPrimitives: $('#heapPrimitivesSelector').val(),
|
||||
drawParentPointers: $('#drawParentPointerSelector').val(),
|
||||
textReferences: $('#textualMemoryLabelsSelector').val(),
|
||||
showOnlyOutputs: $('#showOnlyOutputsSelector').val(),
|
||||
py: $('#pythonVersionSelector').val()};
|
||||
|
||||
if (appMode == 'display') {
|
||||
myArgs.curInstr = myVisualizer.curInstr;
|
||||
}
|
||||
|
||||
var urlStr = $.param.fragment(window.location.href, myArgs, 2 /* clobber all */);
|
||||
$('#urlOutput').val(urlStr);
|
||||
});
|
||||
|
||||
|
||||
$('#genEmbedBtn').bind('click', function() {
|
||||
assert(appMode == 'display');
|
||||
var myArgs = {code: pyInputCodeMirror.getValue(),
|
||||
cumulative: $('#cumulativeModeSelector').val(),
|
||||
heapPrimitives: $('#heapPrimitivesSelector').val(),
|
||||
drawParentPointers: $('#drawParentPointerSelector').val(),
|
||||
textReferences: $('#textualMemoryLabelsSelector').val(),
|
||||
showOnlyOutputs: $('#showOnlyOutputsSelector').val(),
|
||||
py: $('#pythonVersionSelector').val(),
|
||||
curInstr: myVisualizer.curInstr,
|
||||
};
|
||||
|
||||
var embedUrlStr = $.param.fragment('http://pythontutor.com/iframe-embed.html', myArgs, 2 /* clobber all */);
|
||||
var iframeStr = '<iframe width="800" height="500" frameborder="0" src="' + embedUrlStr + '"> </iframe>';
|
||||
$('#embedCodeOutput').val(iframeStr);
|
||||
});
|
||||
});
|
||||
|
||||
118
book/common/ext/codelens/v3/js/opt-lessons.js
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
|
||||
Online Python Tutor
|
||||
https://github.com/pgbovine/OnlinePythonTutor/
|
||||
|
||||
Copyright (C) 2010-2013 Philip J. Guo (philip@pgbovine.net)
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file
|
||||
|
||||
var backend_script = 'exec'; // URL of backend script, which must eventually call pg_logger.py
|
||||
|
||||
var myVisualizer = null; // singleton ExecutionVisualizer instance
|
||||
|
||||
var lessonScript = null;
|
||||
var metadataJSON = null;
|
||||
|
||||
function parseLessonFile(dat) {
|
||||
var toks = dat.split('======');
|
||||
|
||||
// globals
|
||||
lessonScript = toks[0].rtrim();
|
||||
metadataJSON = $.parseJSON(toks[1]);
|
||||
|
||||
$('#lessonTitle').html(metadataJSON.title);
|
||||
$('#lessonDescription').html(metadataJSON.description);
|
||||
|
||||
document.title = metadataJSON.title + ' - Online Python Tutor (v3)';
|
||||
|
||||
$.get(backend_script,
|
||||
{user_script : lessonScript},
|
||||
function(dataFromBackend) {
|
||||
var trace = dataFromBackend.trace;
|
||||
|
||||
// don't enter visualize mode if there are killer errors:
|
||||
if (!trace ||
|
||||
(trace.length == 0) ||
|
||||
(trace[trace.length - 1].event == 'uncaught_exception')) {
|
||||
|
||||
if (trace.length == 1) {
|
||||
alert(trace[0].exception_msg);
|
||||
}
|
||||
else {
|
||||
alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)");
|
||||
}
|
||||
}
|
||||
else {
|
||||
myVisualizer = new ExecutionVisualizer('pyOutputPane',
|
||||
dataFromBackend,
|
||||
{embeddedMode: true,
|
||||
updateOutputCallback: updateLessonNarration});
|
||||
|
||||
myVisualizer.updateOutput();
|
||||
}
|
||||
},
|
||||
"json");
|
||||
}
|
||||
|
||||
function updateLessonNarration(myViz) {
|
||||
var curInstr = myViz.curInstr;
|
||||
|
||||
assert(metadataJSON);
|
||||
|
||||
var annotation = metadataJSON[curInstr + 1]; // adjust for indexing diffs
|
||||
if (annotation) {
|
||||
$('#lessonNarration').html(annotation);
|
||||
}
|
||||
else {
|
||||
$('#lessonNarration').html('');
|
||||
}
|
||||
|
||||
// hack from John DeNero to ensure that once a div grows it height, it
|
||||
// never shrinks again
|
||||
$('#lessonNarration').css('min-height', $('#lessonNarration').css('height'));
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
//$.get("lessons/aliasing.txt", parseLessonFile);
|
||||
//$.get("lessons/dive-into-python-311.txt", parseLessonFile);
|
||||
//$.get("lessons/for-else.txt", parseLessonFile);
|
||||
$.get("lessons/varargs.txt", parseLessonFile);
|
||||
|
||||
// log a generic AJAX error handler
|
||||
$(document).ajaxError(function() {
|
||||
alert("Server error (possibly due to memory/resource overload).");
|
||||
});
|
||||
|
||||
|
||||
// redraw connector arrows on window resize
|
||||
$(window).resize(function() {
|
||||
if (myVisualizer) {
|
||||
myVisualizer.redrawConnectors();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||