Show More
@@ -0,0 +1,56 b'' | |||
|
1 | ||
|
2 | /** | |
|
3 | * Primary styles | |
|
4 | * | |
|
5 | * Author: IPython Development Team | |
|
6 | */ | |
|
7 | ||
|
8 | ||
|
9 | body { | |
|
10 | background-color: white; | |
|
11 | /* This makes sure that the body covers the entire window and needs to | |
|
12 | be in a different element than the display: box in wrapper below */ | |
|
13 | position: absolute; | |
|
14 | left: 0px; | |
|
15 | right: 0px; | |
|
16 | top: 0px; | |
|
17 | bottom: 0px; | |
|
18 | overflow: hidden; | |
|
19 | } | |
|
20 | ||
|
21 | ||
|
22 | div#header { | |
|
23 | /* Initially hidden to prevent FLOUC */ | |
|
24 | display: none; | |
|
25 | position: relative; | |
|
26 | height: 45px; | |
|
27 | padding: 5px; | |
|
28 | margin: 0px; | |
|
29 | width: 100%; | |
|
30 | } | |
|
31 | ||
|
32 | span#ipython_notebook { | |
|
33 | position: absolute; | |
|
34 | padding: 2px; | |
|
35 | } | |
|
36 | ||
|
37 | span#ipython_notebook h1 { | |
|
38 | font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; | |
|
39 | font-size: 197%; | |
|
40 | display: inline; | |
|
41 | color: black; | |
|
42 | } | |
|
43 | ||
|
44 | div#main_app { | |
|
45 | /* Initially hidden to prevent FLOUC */ | |
|
46 | display: none; | |
|
47 | width: 100%; | |
|
48 | position: relative; | |
|
49 | } | |
|
50 | ||
|
51 | .ui-button .ui-button-text { | |
|
52 | padding: 0.2em 0.8em; | |
|
53 | font-size: 77%; | |
|
54 | } | |
|
55 | ||
|
56 |
@@ -0,0 +1,73 b'' | |||
|
1 | /** | |
|
2 | * HTML5 ✰ Boilerplate | |
|
3 | * | |
|
4 | * style.css contains a reset, font normalization and some base styles. | |
|
5 | * | |
|
6 | * Credit is left where credit is due. | |
|
7 | * Much inspiration was taken from these projects: | |
|
8 | * - yui.yahooapis.com/2.8.1/build/base/base.css | |
|
9 | * - camendesign.com/design/ | |
|
10 | * - praegnanz.de/weblog/htmlcssjs-kickstart | |
|
11 | */ | |
|
12 | ||
|
13 | ||
|
14 | /** | |
|
15 | * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) | |
|
16 | * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark | |
|
17 | * html5doctor.com/html-5-reset-stylesheet/ | |
|
18 | */ | |
|
19 | ||
|
20 | html, body, div, span, object, iframe, | |
|
21 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, | |
|
22 | abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, | |
|
23 | small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, | |
|
24 | fieldset, form, label, legend, | |
|
25 | table, caption, tbody, tfoot, thead, tr, th, td, | |
|
26 | article, aside, canvas, details, figcaption, figure, | |
|
27 | footer, header, hgroup, menu, nav, section, summary, | |
|
28 | time, mark, audio, video { | |
|
29 | margin: 0; | |
|
30 | padding: 0; | |
|
31 | border: 0; | |
|
32 | font-size: 100%; | |
|
33 | font: inherit; | |
|
34 | vertical-align: baseline; | |
|
35 | } | |
|
36 | ||
|
37 | article, aside, details, figcaption, figure, | |
|
38 | footer, header, hgroup, menu, nav, section { | |
|
39 | display: block; | |
|
40 | } | |
|
41 | ||
|
42 | blockquote, q { quotes: none; } | |
|
43 | ||
|
44 | blockquote:before, blockquote:after, | |
|
45 | q:before, q:after { content: ""; content: none; } | |
|
46 | ||
|
47 | ins { background-color: #ff9; color: #000; text-decoration: none; } | |
|
48 | ||
|
49 | mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; } | |
|
50 | ||
|
51 | del { text-decoration: line-through; } | |
|
52 | ||
|
53 | abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; } | |
|
54 | ||
|
55 | table { border-collapse: collapse; border-spacing: 0; } | |
|
56 | ||
|
57 | hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } | |
|
58 | ||
|
59 | input, select { vertical-align: middle; } | |
|
60 | ||
|
61 | ||
|
62 | /** | |
|
63 | * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/ | |
|
64 | */ | |
|
65 | ||
|
66 | body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */ | |
|
67 | select, input, textarea, button { font:99% sans-serif; } | |
|
68 | ||
|
69 | /* Normalize monospace sizing: | |
|
70 | en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */ | |
|
71 | pre, code, kbd, samp { font-family: monospace, sans-serif; } | |
|
72 | ||
|
73 |
@@ -0,0 +1,64 b'' | |||
|
1 | ||
|
2 | /** | |
|
3 | * Primary styles | |
|
4 | * | |
|
5 | * Author: IPython Development Team | |
|
6 | */ | |
|
7 | ||
|
8 | ||
|
9 | body { | |
|
10 | background-color: white; | |
|
11 | /* This makes sure that the body covers the entire window and needs to | |
|
12 | be in a different element than the display: box in wrapper below */ | |
|
13 | position: absolute; | |
|
14 | left: 0px; | |
|
15 | right: 0px; | |
|
16 | top: 0px; | |
|
17 | bottom: 0px; | |
|
18 | overflow: auto; | |
|
19 | } | |
|
20 | ||
|
21 | #content_panel { | |
|
22 | width: 600px; | |
|
23 | } | |
|
24 | ||
|
25 | #content_toolbar { | |
|
26 | padding: 10px 5px; | |
|
27 | } | |
|
28 | ||
|
29 | #header_border { | |
|
30 | width: 100%; | |
|
31 | height: 2px; | |
|
32 | } | |
|
33 | ||
|
34 | #app_hbox { | |
|
35 | width: 100%; | |
|
36 | } | |
|
37 | ||
|
38 | #notebooks_buttons { | |
|
39 | float: right; | |
|
40 | } | |
|
41 | ||
|
42 | #project_name { | |
|
43 | height: 25px; | |
|
44 | line-height: 25px; | |
|
45 | padding: 3px; | |
|
46 | } | |
|
47 | ||
|
48 | .notebook_item { | |
|
49 | height: 25px; | |
|
50 | line-height: 25px; | |
|
51 | padding: 3px; | |
|
52 | } | |
|
53 | ||
|
54 | .notebook_item a { | |
|
55 | text-decoration: none; | |
|
56 | } | |
|
57 | ||
|
58 | .item_buttons { | |
|
59 | float: right; | |
|
60 | } | |
|
61 | ||
|
62 | .highlight_text { | |
|
63 | color: blue; | |
|
64 | } |
@@ -0,0 +1,30 b'' | |||
|
1 | ||
|
2 | //============================================================================ | |
|
3 | // On document ready | |
|
4 | //============================================================================ | |
|
5 | ||
|
6 | ||
|
7 | $(document).ready(function () { | |
|
8 | ||
|
9 | $('div#header').addClass('border-box-sizing'); | |
|
10 | $('div#header_border').addClass('border-box-sizing ui-widget ui-widget-content'); | |
|
11 | ||
|
12 | $('div#main_app').addClass('border-box-sizing ui-widget'); | |
|
13 | $('div#app_hbox').addClass('hbox center'); | |
|
14 | ||
|
15 | $('div#content_toolbar').addClass('ui-widget ui-helper-clearfix'); | |
|
16 | ||
|
17 | $('#new_notebook').click(function (e) { | |
|
18 | window.open('/new'); | |
|
19 | }); | |
|
20 | ||
|
21 | IPython.notebook_list = new IPython.NotebookList('div#notebook_list'); | |
|
22 | IPython.notebook_list.load_list(); | |
|
23 | ||
|
24 | // These have display: none in the css file and are made visible here to prevent FLOUC. | |
|
25 | $('div#header').css('display','block'); | |
|
26 | $('div#main_app').css('display','block'); | |
|
27 | ||
|
28 | ||
|
29 | }); | |
|
30 |
@@ -0,0 +1,63 b'' | |||
|
1 | ||
|
2 | //============================================================================ | |
|
3 | // Cell | |
|
4 | //============================================================================ | |
|
5 | ||
|
6 | var IPython = (function (IPython) { | |
|
7 | ||
|
8 | var NotebookList = function (selector) { | |
|
9 | this.selector = selector; | |
|
10 | if (this.selector !== undefined) { | |
|
11 | this.element = $(selector); | |
|
12 | this.style(); | |
|
13 | this.bind_events(); | |
|
14 | } | |
|
15 | }; | |
|
16 | ||
|
17 | NotebookList.prototype.style = function () { | |
|
18 | this.element.addClass('ui-widget ui-widget-content'); | |
|
19 | $('div#project_name').addClass('ui-widget ui-widget-header'); | |
|
20 | }; | |
|
21 | ||
|
22 | ||
|
23 | NotebookList.prototype.bind_events = function () { | |
|
24 | ||
|
25 | }; | |
|
26 | ||
|
27 | ||
|
28 | NotebookList.prototype.load_list = function () { | |
|
29 | var settings = { | |
|
30 | processData : false, | |
|
31 | cache : false, | |
|
32 | type : "GET", | |
|
33 | dataType : "json", | |
|
34 | success : $.proxy(this.list_loaded,this) | |
|
35 | }; | |
|
36 | $.ajax("/notebooks", settings); | |
|
37 | }; | |
|
38 | ||
|
39 | ||
|
40 | NotebookList.prototype.list_loaded = function (data, status, xhr) { | |
|
41 | var len = data.length; | |
|
42 | for (var i=0; i<len; i++) { | |
|
43 | var div = $('<div/>').addClass('notebook_item ui-widget ui-widget-content ui-helper-clearfix'); | |
|
44 | var nbname = $('<span/>').addClass('item_name').append( | |
|
45 | $('<a/>').attr('href','/'+data[i].notebook_id). | |
|
46 | attr('target','_blank'). | |
|
47 | text(data[i].name) | |
|
48 | ); | |
|
49 | var buttons = $('<span/>').addClass('item_buttons').append( | |
|
50 | $('<button>Delete</button>').button() | |
|
51 | ) | |
|
52 | div.append(nbname).append(buttons); | |
|
53 | this.element.append(div); | |
|
54 | } | |
|
55 | }; | |
|
56 | ||
|
57 | ||
|
58 | IPython.NotebookList = NotebookList; | |
|
59 | ||
|
60 | return IPython; | |
|
61 | ||
|
62 | }(IPython)); | |
|
63 |
@@ -17,7 +17,14 b' from tornado import websocket' | |||
|
17 | 17 | #----------------------------------------------------------------------------- |
|
18 | 18 | |
|
19 | 19 | |
|
20 |
class |
|
|
20 | class NBBrowserHandler(web.RequestHandler): | |
|
21 | def get(self): | |
|
22 | nbm = self.application.notebook_manager | |
|
23 | project = nbm.notebook_dir | |
|
24 | self.render('nbbrowser.html', project=project) | |
|
25 | ||
|
26 | ||
|
27 | class NewHandler(web.RequestHandler): | |
|
21 | 28 | def get(self): |
|
22 | 29 | notebook_id = self.application.notebook_manager.new_notebook() |
|
23 | 30 | self.render('notebook.html', notebook_id=notebook_id) |
@@ -30,7 +30,7 b' from tornado import web' | |||
|
30 | 30 | from .kernelmanager import KernelManager |
|
31 | 31 | from .sessionmanager import SessionManager |
|
32 | 32 | from .handlers import ( |
|
33 |
|
|
|
33 | NBBrowserHandler, NewHandler, NamedNotebookHandler, | |
|
34 | 34 | KernelHandler, KernelActionHandler, ZMQStreamHandler, |
|
35 | 35 | NotebookRootHandler, NotebookHandler |
|
36 | 36 | ) |
@@ -67,7 +67,8 b' class NotebookWebApplication(web.Application):' | |||
|
67 | 67 | |
|
68 | 68 | def __init__(self, kernel_manager, log, kernel_argv, config): |
|
69 | 69 | handlers = [ |
|
70 |
(r"/", |
|
|
70 | (r"/", NBBrowserHandler), | |
|
71 | (r"/new", NewHandler), | |
|
71 | 72 | (r"/%s" % _notebook_id_regex, NamedNotebookHandler), |
|
72 | 73 | (r"/kernels", KernelHandler), |
|
73 | 74 | (r"/kernels/%s/%s" % (_kernel_id_regex, _kernel_action_regex), KernelActionHandler), |
@@ -44,8 +44,9 b' class NotebookManager(Configurable):' | |||
|
44 | 44 | dict(notebook_id=notebook,name=name) |
|
45 | 45 | """ |
|
46 | 46 | names = os.listdir(self.notebook_dir) |
|
47 |
names = [name.s |
|
|
47 | names = [name.split(u'.')[0] \ | |
|
48 | 48 | for name in names if name.endswith(self.filename_ext)] |
|
49 | print names | |
|
49 | 50 | data = [] |
|
50 | 51 | for name in names: |
|
51 | 52 | if name not in self.rev_mapping: |
@@ -53,6 +54,7 b' class NotebookManager(Configurable):' | |||
|
53 | 54 | else: |
|
54 | 55 | notebook_id = self.rev_mapping[name] |
|
55 | 56 | data.append(dict(notebook_id=notebook_id,name=name)) |
|
57 | data = sorted(data, key=lambda item: item['name']) | |
|
56 | 58 | return data |
|
57 | 59 | |
|
58 | 60 | def new_notebook_id(self, name): |
@@ -112,11 +114,13 b' class NotebookManager(Configurable):' | |||
|
112 | 114 | with open(path,'r') as f: |
|
113 | 115 | s = f.read() |
|
114 | 116 | try: |
|
115 | # v2 and later have xml in the .ipynb files | |
|
117 | # v2 and later have xml in the .ipynb files. | |
|
116 | 118 | nb = current.reads(s, 'xml') |
|
117 | 119 | except: |
|
118 | # v1 had json in the .ipynb files | |
|
120 | # v1 had json in the .ipynb files. | |
|
119 | 121 | nb = current.reads(s, 'json') |
|
122 | # v1 notebooks don't have a name field, so use the filename. | |
|
123 | nb.name = os.path.split(path)[-1].split(u'.')[0] | |
|
120 | 124 | except: |
|
121 | 125 | raise web.HTTPError(404) |
|
122 | 126 | return last_modified, nb |
|
1 | NO CONTENT: modified file |
@@ -1,75 +1,3 b'' | |||
|
1 | /** | |
|
2 | * HTML5 ✰ Boilerplate | |
|
3 | * | |
|
4 | * style.css contains a reset, font normalization and some base styles. | |
|
5 | * | |
|
6 | * Credit is left where credit is due. | |
|
7 | * Much inspiration was taken from these projects: | |
|
8 | * - yui.yahooapis.com/2.8.1/build/base/base.css | |
|
9 | * - camendesign.com/design/ | |
|
10 | * - praegnanz.de/weblog/htmlcssjs-kickstart | |
|
11 | */ | |
|
12 | ||
|
13 | ||
|
14 | /** | |
|
15 | * html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline) | |
|
16 | * v1.6.1 2010-09-17 | Authors: Eric Meyer & Richard Clark | |
|
17 | * html5doctor.com/html-5-reset-stylesheet/ | |
|
18 | */ | |
|
19 | ||
|
20 | html, body, div, span, object, iframe, | |
|
21 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, | |
|
22 | abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, | |
|
23 | small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, | |
|
24 | fieldset, form, label, legend, | |
|
25 | table, caption, tbody, tfoot, thead, tr, th, td, | |
|
26 | article, aside, canvas, details, figcaption, figure, | |
|
27 | footer, header, hgroup, menu, nav, section, summary, | |
|
28 | time, mark, audio, video { | |
|
29 | margin: 0; | |
|
30 | padding: 0; | |
|
31 | border: 0; | |
|
32 | font-size: 100%; | |
|
33 | font: inherit; | |
|
34 | vertical-align: baseline; | |
|
35 | } | |
|
36 | ||
|
37 | article, aside, details, figcaption, figure, | |
|
38 | footer, header, hgroup, menu, nav, section { | |
|
39 | display: block; | |
|
40 | } | |
|
41 | ||
|
42 | blockquote, q { quotes: none; } | |
|
43 | ||
|
44 | blockquote:before, blockquote:after, | |
|
45 | q:before, q:after { content: ""; content: none; } | |
|
46 | ||
|
47 | ins { background-color: #ff9; color: #000; text-decoration: none; } | |
|
48 | ||
|
49 | mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; } | |
|
50 | ||
|
51 | del { text-decoration: line-through; } | |
|
52 | ||
|
53 | abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; } | |
|
54 | ||
|
55 | table { border-collapse: collapse; border-spacing: 0; } | |
|
56 | ||
|
57 | hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } | |
|
58 | ||
|
59 | input, select { vertical-align: middle; } | |
|
60 | ||
|
61 | ||
|
62 | /** | |
|
63 | * Font normalization inspired by YUI Library's fonts.css: developer.yahoo.com/yui/ | |
|
64 | */ | |
|
65 | ||
|
66 | body { font:13px/1.231 sans-serif; *font-size:small; } /* Hack retained to preserve specificity */ | |
|
67 | select, input, textarea, button { font:99% sans-serif; } | |
|
68 | ||
|
69 | /* Normalize monospace sizing: | |
|
70 | en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */ | |
|
71 | pre, code, kbd, samp { font-family: monospace, sans-serif; } | |
|
72 | ||
|
73 | 1 | |
|
74 | 2 | /** |
|
75 | 3 | * Primary styles |
@@ -90,28 +18,6 b' body {' | |||
|
90 | 18 | overflow: hidden; |
|
91 | 19 | } |
|
92 | 20 | |
|
93 | ||
|
94 | div#header { | |
|
95 | /* Initially hidden to prevent FLOUC */ | |
|
96 | display: none; | |
|
97 | position: relative; | |
|
98 | height: 45px; | |
|
99 | padding: 5px; | |
|
100 | margin: 0px; | |
|
101 | width: 100%; | |
|
102 | } | |
|
103 | ||
|
104 | span#ipython_notebook { | |
|
105 | position: absolute; | |
|
106 | padding: 2px; | |
|
107 | } | |
|
108 | ||
|
109 | span#ipython_notebook h1 { | |
|
110 | font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; | |
|
111 | font-size: 197%; | |
|
112 | display: inline; | |
|
113 | } | |
|
114 | ||
|
115 | 21 | span#save_widget { |
|
116 | 22 | position: absolute; |
|
117 | 23 | left: 0px; |
@@ -144,13 +50,6 b' span#kernel_status {' | |||
|
144 | 50 | color: black; |
|
145 | 51 | } |
|
146 | 52 | |
|
147 | div#notebook_app { | |
|
148 | /* Initially hidden to prevent FLOUC */ | |
|
149 | display: none; | |
|
150 | width: 100%; | |
|
151 | position: relative; | |
|
152 | } | |
|
153 | ||
|
154 | 53 | div#left_panel { |
|
155 | 54 | overflow-y: auto; |
|
156 | 55 | top: 0px; |
@@ -200,12 +99,6 b' span.button_label {' | |||
|
200 | 99 | margin-bottom: 0px; |
|
201 | 100 | } |
|
202 | 101 | |
|
203 | ||
|
204 | .ui-button .ui-button-text { | |
|
205 | padding: 0.2em 0.8em; | |
|
206 | font-size: 77%; | |
|
207 | } | |
|
208 | ||
|
209 | 102 | #download_format { |
|
210 | 103 | float: right; |
|
211 | 104 | font-size: 85%; |
@@ -22,7 +22,7 b' var IPython = (function (IPython) {' | |||
|
22 | 22 | var header_height = $('div#header').outerHeight(true); |
|
23 | 23 | var app_height = h - header_height - 2; // content height |
|
24 | 24 | |
|
25 |
$('div#n |
|
|
25 | $('div#main_app').height(app_height + 2); // content+padding+border height | |
|
26 | 26 | |
|
27 | 27 | $('div#left_panel').height(app_height); |
|
28 | 28 |
@@ -61,14 +61,14 b' var IPython = (function (IPython) {' | |||
|
61 | 61 | }); |
|
62 | 62 | |
|
63 | 63 | this.element.bind('collapse_pager', function () { |
|
64 |
var app_height = $('div#n |
|
|
64 | var app_height = $('div#main_app').height(); // content height | |
|
65 | 65 | var splitter_height = $('div#pager_splitter').outerHeight(true); |
|
66 | 66 | var new_height = app_height - splitter_height; |
|
67 | 67 | that.element.animate({height : new_height + 'px'}, 'fast'); |
|
68 | 68 | }); |
|
69 | 69 | |
|
70 | 70 | this.element.bind('expand_pager', function () { |
|
71 |
var app_height = $('div#n |
|
|
71 | var app_height = $('div#main_app').height(); // content height | |
|
72 | 72 | var splitter_height = $('div#pager_splitter').outerHeight(true); |
|
73 | 73 | var pager_height = $('div#pager').outerHeight(true); |
|
74 | 74 | var new_height = app_height - pager_height - splitter_height; |
@@ -94,6 +94,12 b' var IPython = (function (IPython) {' | |||
|
94 | 94 | this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0); |
|
95 | 95 | }; |
|
96 | 96 | |
|
97 | ||
|
98 | Notebook.prototype.scroll_to_top = function () { | |
|
99 | this.element.animate({scrollTop:0}, 0); | |
|
100 | }; | |
|
101 | ||
|
102 | ||
|
97 | 103 | // Cell indexing, retrieval, etc. |
|
98 | 104 | |
|
99 | 105 | |
@@ -296,12 +302,10 b' var IPython = (function (IPython) {' | |||
|
296 | 302 | // TODO: Bounds check for i |
|
297 | 303 | var i = this.index_or_selected(index); |
|
298 | 304 | var cell = new IPython.CodeCell(this); |
|
299 | // cell.set_input_prompt(this.next_prompt_number); | |
|
300 | 305 | cell.set_input_prompt(); |
|
301 | this.next_prompt_number = this.next_prompt_number + 1; | |
|
302 | 306 | this.insert_cell_before(cell, i); |
|
303 | 307 | this.select(this.find_cell_index(cell)); |
|
304 |
return |
|
|
308 | return cell; | |
|
305 | 309 | } |
|
306 | 310 | |
|
307 | 311 | |
@@ -309,12 +313,10 b' var IPython = (function (IPython) {' | |||
|
309 | 313 | // TODO: Bounds check for i |
|
310 | 314 | var i = this.index_or_selected(index); |
|
311 | 315 | var cell = new IPython.CodeCell(this); |
|
312 | // cell.set_input_prompt(this.next_prompt_number); | |
|
313 | 316 | cell.set_input_prompt(); |
|
314 | this.next_prompt_number = this.next_prompt_number + 1; | |
|
315 | 317 | this.insert_cell_after(cell, i); |
|
316 | 318 | this.select(this.find_cell_index(cell)); |
|
317 |
return |
|
|
319 | return cell; | |
|
318 | 320 | } |
|
319 | 321 | |
|
320 | 322 | |
@@ -325,7 +327,7 b' var IPython = (function (IPython) {' | |||
|
325 | 327 | cell.config_mathjax(); |
|
326 | 328 | this.insert_cell_before(cell, i); |
|
327 | 329 | this.select(this.find_cell_index(cell)); |
|
328 |
return |
|
|
330 | return cell; | |
|
329 | 331 | } |
|
330 | 332 | |
|
331 | 333 | |
@@ -336,7 +338,7 b' var IPython = (function (IPython) {' | |||
|
336 | 338 | cell.config_mathjax(); |
|
337 | 339 | this.insert_cell_after(cell, i); |
|
338 | 340 | this.select(this.find_cell_index(cell)); |
|
339 |
return |
|
|
341 | return cell; | |
|
340 | 342 | } |
|
341 | 343 | |
|
342 | 344 | |
@@ -517,14 +519,15 b' var IPython = (function (IPython) {' | |||
|
517 | 519 | var new_cells = worksheet.cells; |
|
518 | 520 | ncells = new_cells.length; |
|
519 | 521 | var cell_data = null; |
|
522 | var new_cell = null; | |
|
520 | 523 | for (var i=0; i<ncells; i++) { |
|
521 | 524 | cell_data = new_cells[i]; |
|
522 | 525 | if (cell_data.cell_type == 'code') { |
|
523 | this.insert_code_cell_after(); | |
|
524 |
|
|
|
526 | new_cell = this.insert_code_cell_after(); | |
|
527 | new_cell.fromJSON(cell_data); | |
|
525 | 528 | } else if (cell_data.cell_type === 'text') { |
|
526 | this.insert_text_cell_after(); | |
|
527 |
|
|
|
529 | new_cell = this.insert_text_cell_after(); | |
|
530 | new_cell.fromJSON(cell_data); | |
|
528 | 531 | }; |
|
529 | 532 | }; |
|
530 | 533 | }; |
@@ -573,7 +576,8 b' var IPython = (function (IPython) {' | |||
|
573 | 576 | } |
|
574 | 577 | |
|
575 | 578 | |
|
576 | Notebook.prototype.load_notebook = function () { | |
|
579 | Notebook.prototype.load_notebook = function (callback) { | |
|
580 | var that = this; | |
|
577 | 581 | var notebook_id = IPython.save_widget.get_notebook_id(); |
|
578 | 582 | // We do the call with settings so we can set cache to false. |
|
579 | 583 | var settings = { |
@@ -581,7 +585,12 b' var IPython = (function (IPython) {' | |||
|
581 | 585 | cache : false, |
|
582 | 586 | type : "GET", |
|
583 | 587 | dataType : "json", |
|
584 | success : $.proxy(this.notebook_loaded,this) | |
|
588 | success : function (data, status, xhr) { | |
|
589 | that.notebook_loaded(data, status, xhr); | |
|
590 | if (callback !== undefined) { | |
|
591 | callback(); | |
|
592 | }; | |
|
593 | } | |
|
585 | 594 | }; |
|
586 | 595 | IPython.save_widget.status_loading(); |
|
587 | 596 | $.ajax("/notebooks/" + notebook_id, settings); |
@@ -596,6 +605,12 b' var IPython = (function (IPython) {' | |||
|
596 | 605 | IPython.save_widget.status_save(); |
|
597 | 606 | IPython.save_widget.set_notebook_name(data.name); |
|
598 | 607 | this.start_kernel(); |
|
608 | // fromJSON always selects the last cell inserted. We need to wait | |
|
609 | // until that is done before scrolling to the top. | |
|
610 | setTimeout(function () { | |
|
611 | IPython.notebook.select(0); | |
|
612 | IPython.notebook.scroll_to_top(); | |
|
613 | }, 50); | |
|
599 | 614 | }; |
|
600 | 615 | |
|
601 | 616 | IPython.Notebook = Notebook; |
@@ -18,7 +18,7 b' $(document).ready(function () {' | |||
|
18 | 18 | }); |
|
19 | 19 | |
|
20 | 20 | $('div#header').addClass('border-box-sizing'); |
|
21 |
$('div#n |
|
|
21 | $('div#main_app').addClass('border-box-sizing ui-widget ui-widget-content'); | |
|
22 | 22 | $('div#notebook_panel').addClass('border-box-sizing ui-widget'); |
|
23 | 23 | |
|
24 | 24 | IPython.layout_manager = new IPython.LayoutManager(); |
@@ -33,11 +33,12 b' $(document).ready(function () {' | |||
|
33 | 33 | |
|
34 | 34 | // These have display: none in the css file and are made visible here to prevent FLOUC. |
|
35 | 35 | $('div#header').css('display','block'); |
|
36 |
$('div#n |
|
|
37 | ||
|
38 | IPython.notebook.load_notebook(); | |
|
36 | $('div#main_app').css('display','block'); | |
|
39 | 37 | |
|
40 | 38 | // Perform these actions after the notebook has been loaded. |
|
39 | // We wait 100 milliseconds because the notebook scrolls to the top after a load | |
|
40 | // is completed and we need to wait for that to mostly finish. | |
|
41 | IPython.notebook.load_notebook(function () { | |
|
41 | 42 | setTimeout(function () { |
|
42 | 43 | IPython.save_widget.update_url(); |
|
43 | 44 | IPython.layout_manager.do_resize(); |
@@ -45,3 +46,5 b' $(document).ready(function () {' | |||
|
45 | 46 |
}, |
|
46 | 47 | }); |
|
47 | 48 | |
|
49 | }); | |
|
50 |
@@ -93,11 +93,10 b' var IPython = (function (IPython) {' | |||
|
93 | 93 | PanelSection.prototype.bind_events.apply(this); |
|
94 | 94 | var that = this; |
|
95 | 95 | this.content.find('#new_notebook').click(function () { |
|
96 | console.log('click!') | |
|
97 | window.open('/'); | |
|
96 | window.open('/new'); | |
|
98 | 97 | }); |
|
99 | 98 | this.content.find('#open_notebook').click(function () { |
|
100 | alert('Not Implemented'); | |
|
99 | window.open('/'); | |
|
101 | 100 | }); |
|
102 | 101 | this.content.find('#download_notebook').click(function () { |
|
103 | 102 | var format = that.content.find('#download_format').val(); |
@@ -1,30 +1,64 b'' | |||
|
1 | 1 | <!DOCTYPE HTML> |
|
2 | <html> | |
|
2 | 3 | |
|
3 | 4 | <head> |
|
4 | 5 | <meta charset="utf-8"> |
|
5 | 6 | |
|
7 | <title>IPython Notebook</title> | |
|
6 | 8 | |
|
7 | <title>IPython Notebook Browser</title> | |
|
8 | <meta name="description" content="Browser for local IPython notebooks"> | |
|
9 | <meta name="author" content="IPython dev team"> | |
|
10 | ||
|
11 | <link rel="stylesheet" href="static/css/nbbrowser.css" type="text/css" /> | |
|
12 | <link rel="stylesheet" href="static/jquery/css/jquery.wijmo-open.1.1.3.css" type="text/css" /> | |
|
13 | 9 | <link rel="stylesheet" href="static/jquery/css/themes/aristo/jquery-wijmo.css" type="text/css" /> |
|
10 | <!-- <link rel="stylesheet" href="static/jquery/css/themes/rocket/jquery-wijmo.css" type="text/css" /> --> | |
|
11 | <!-- <link rel="stylesheet" href="static/jquery/css/themes/smoothness/jquery-ui-1.8.14.custom.css" type="text/css" />--> | |
|
14 | 12 | |
|
13 | <link rel="stylesheet" href="static/css/boilerplate.css" type="text/css" /> | |
|
14 | <link rel="stylesheet" href="static/css/layout.css" type="text/css" /> | |
|
15 | <link rel="stylesheet" href="static/css/base.css" type="text/css" /> | |
|
16 | <link rel="stylesheet" href="static/css/nbbrowser.css" type="text/css" /> | |
|
15 | 17 | |
|
16 | 18 | </head> |
|
17 | 19 | |
|
18 | 20 | <body> |
|
19 | 21 | |
|
22 | <div id="header"> | |
|
23 | <span id="ipython_notebook"><h1>IPython Notebook</h1></span> | |
|
24 | </div> | |
|
25 | ||
|
26 | <div id="header_border"></div> | |
|
27 | ||
|
28 | <div id="main_app"> | |
|
29 | ||
|
30 | <div id="app_hbox"> | |
|
31 | ||
|
32 | <!-- <div id="left_panel">--> | |
|
33 | <!-- </div>--> | |
|
20 | 34 | |
|
35 | <div id="content_panel"> | |
|
36 | <div id="content_toolbar"> | |
|
37 | <span id="notebooks_buttons"> | |
|
38 | <button id="new_notebook">New Notebook</button> | |
|
39 | </span> | |
|
40 | </div> | |
|
41 | <div id="notebook_list"> | |
|
42 | <div id="project_name"><h2>{{project}}</h2></div> | |
|
43 | </div> | |
|
21 | 44 | |
|
22 | <!-- JavaScript at the bottom for fast page loading --> | |
|
45 | </div> | |
|
23 | 46 | |
|
24 | <script src="static/jquery/js/jquery-1.5.1.min.js" type="text/javascript" charset="utf-8"></script> | |
|
25 | <script src="static/jquery/js/jquery-ui-1.8.10.custom.min.js" type="text/javascript" charset="utf-8"></script> | |
|
26 | <script src="static/jquery/js/jquery.wijmo-open.1.1.3.min.js" type="text/javascript" charset="utf-8"></script> | |
|
27 | <script src="static/js/nbbrowser.js" type="text/javascript" charset="utf-8"></script> | |
|
47 | <!-- <div id="right_panel">--> | |
|
48 | <!-- </div>--> | |
|
49 | ||
|
50 | </div> | |
|
51 | ||
|
52 | </div> | |
|
53 | ||
|
54 | <script src="static/jquery/js/jquery-1.6.2.min.js" type="text/javascript" charset="utf-8"></script> | |
|
55 | <script src="static/jquery/js/jquery-ui-1.8.14.custom.min.js" type="text/javascript" charset="utf-8"></script> | |
|
56 | <script src="static/js/namespace.js" type="text/javascript" charset="utf-8"></script> | |
|
57 | <script src="static/js/notebooklist.js" type="text/javascript" charset="utf-8"></script> | |
|
58 | <script src="static/js/nbbrowser_main.js" type="text/javascript" charset="utf-8"></script> | |
|
28 | 59 | |
|
29 | 60 | </body> |
|
61 | ||
|
30 | 62 | </html> |
|
63 | ||
|
64 |
@@ -22,7 +22,9 b'' | |||
|
22 | 22 | <link rel="stylesheet" href="static/codemirror2/lib/codemirror.css"> |
|
23 | 23 | <link rel="stylesheet" href="static/codemirror2/mode/python/python.css"> |
|
24 | 24 | |
|
25 | <link rel="stylesheet" href="static/css/boilerplate.css" type="text/css" /> | |
|
25 | 26 | <link rel="stylesheet" href="static/css/layout.css" type="text/css" /> |
|
27 | <link rel="stylesheet" href="static/css/base.css" type="text/css" /> | |
|
26 | 28 | <link rel="stylesheet" href="static/css/notebook.css" type="text/css" /> |
|
27 | 29 | |
|
28 | 30 | </head> |
@@ -39,7 +41,7 b'' | |||
|
39 | 41 | <span id="kernel_status">Idle</span> |
|
40 | 42 | </div> |
|
41 | 43 | |
|
42 |
<div id="n |
|
|
44 | <div id="main_app"> | |
|
43 | 45 | |
|
44 | 46 | <div id="left_panel"> |
|
45 | 47 |
General Comments 0
You need to be logged in to leave comments.
Login now