Show More
@@ -76,7 +76,7 b' define([' | |||||
76 | notebook_path |
|
76 | notebook_path | |
77 | ) + "?download=" + download.toString(); |
|
77 | ) + "?download=" + download.toString(); | |
78 |
|
78 | |||
79 | var w = window.open() |
|
79 | var w = window.open(); | |
80 | if (this.notebook.dirty) { |
|
80 | if (this.notebook.dirty) { | |
81 | this.notebook.save_notebook().then(function() { |
|
81 | this.notebook.save_notebook().then(function() { | |
82 | w.location = url; |
|
82 | w.location = url; | |
@@ -332,6 +332,7 b' define([' | |||||
332 | this.events.on('kernel_ready.Kernel', function(event, data) { |
|
332 | this.events.on('kernel_ready.Kernel', function(event, data) { | |
333 | var langinfo = data.kernel.info_reply.language_info || {}; |
|
333 | var langinfo = data.kernel.info_reply.language_info || {}; | |
334 | that.update_nbconvert_script(langinfo); |
|
334 | that.update_nbconvert_script(langinfo); | |
|
335 | that.add_kernel_help_links(data.kernel.info_reply.help_links || []); | |||
335 | }); |
|
336 | }); | |
336 | }; |
|
337 | }; | |
337 |
|
338 | |||
@@ -374,11 +375,49 b' define([' | |||||
374 | var that = this; |
|
375 | var that = this; | |
375 |
|
376 | |||
376 | // Set menu entry text to e.g. "Python (.py)" |
|
377 | // Set menu entry text to e.g. "Python (.py)" | |
377 | var langname = (langinfo.name || 'Script') |
|
378 | var langname = (langinfo.name || 'Script'); | |
378 | langname = langname.charAt(0).toUpperCase()+langname.substr(1) // Capitalise |
|
379 | langname = langname.charAt(0).toUpperCase()+langname.substr(1); // Capitalise | |
379 | el.find('a').text(langname + ' ('+(langinfo.file_extension || 'txt')+')'); |
|
380 | el.find('a').text(langname + ' ('+(langinfo.file_extension || 'txt')+')'); | |
380 | }; |
|
381 | }; | |
381 |
|
382 | |||
|
383 | MenuBar.prototype.add_kernel_help_links = function(help_links) { | |||
|
384 | /** add links from kernel_info to the help menu */ | |||
|
385 | var divider = $("#kernel-help-links"); | |||
|
386 | if (divider.length === 0) { | |||
|
387 | // insert kernel help section above about link | |||
|
388 | var about = $("#notebook_about").parent(); | |||
|
389 | divider = $("<li>") | |||
|
390 | .attr('id', "kernel-help-links") | |||
|
391 | .addClass('divider'); | |||
|
392 | about.prev().before(divider); | |||
|
393 | } | |||
|
394 | // remove previous entries | |||
|
395 | while (!divider.next().hasClass('divider')) { | |||
|
396 | divider.next().remove(); | |||
|
397 | } | |||
|
398 | if (help_links.length === 0) { | |||
|
399 | // no help links, remove the divider | |||
|
400 | divider.remove(); | |||
|
401 | return; | |||
|
402 | } | |||
|
403 | var cursor = divider; | |||
|
404 | help_links.map(function (link) { | |||
|
405 | cursor.after($("<li>") | |||
|
406 | .append($("<a>") | |||
|
407 | .attr('target', '_blank') | |||
|
408 | .attr('title', 'Opens in a new window') | |||
|
409 | .attr('href', link.url) | |||
|
410 | .text(link.text) | |||
|
411 | .append($("<i>") | |||
|
412 | .addClass("fa fa-external-link menu-icon pull-right") | |||
|
413 | ) | |||
|
414 | ) | |||
|
415 | ); | |||
|
416 | cursor = cursor.next(); | |||
|
417 | }); | |||
|
418 | ||||
|
419 | }; | |||
|
420 | ||||
382 | // Backwards compatability. |
|
421 | // Backwards compatability. | |
383 | IPython.MenuBar = MenuBar; |
|
422 | IPython.MenuBar = MenuBar; | |
384 |
|
423 |
@@ -246,17 +246,9 b' class="notebook_app"' | |||||
246 | {% set |
|
246 | {% set | |
247 | sections = ( |
|
247 | sections = ( | |
248 | ( |
|
248 | ( | |
249 |
("http://ipython.org/ |
|
249 | ("http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/examples/Index.ipynb", "Notebook Help", True), | |
250 | ("http://nbviewer.ipython.org/github/ipython/ipython/tree/2.x/examples/Index.ipynb", "Notebook Help", True), |
|
|||
251 | ),( |
|
|||
252 | ("http://docs.python.org","Python",True), |
|
|||
253 | ("http://help.github.com/articles/github-flavored-markdown","Markdown",True), |
|
250 | ("http://help.github.com/articles/github-flavored-markdown","Markdown",True), | |
254 | ("http://docs.scipy.org/doc/numpy/reference/","NumPy",True), |
|
251 | ), | |
255 | ("http://docs.scipy.org/doc/scipy/reference/","SciPy",True), |
|
|||
256 | ("http://matplotlib.org/contents.html","Matplotlib",True), |
|
|||
257 | ("http://docs.sympy.org/latest/index.html","SymPy",True), |
|
|||
258 | ("http://pandas.pydata.org/pandas-docs/stable/","pandas", True) |
|
|||
259 | ) |
|
|||
260 | ) |
|
252 | ) | |
261 | %} |
|
253 | %} | |
262 |
|
254 |
@@ -7,7 +7,7 b' import traceback' | |||||
7 | from IPython.core import release |
|
7 | from IPython.core import release | |
8 | from IPython.utils.py3compat import builtin_mod, PY3 |
|
8 | from IPython.utils.py3compat import builtin_mod, PY3 | |
9 | from IPython.utils.tokenutil import token_at_cursor, line_at_cursor |
|
9 | from IPython.utils.tokenutil import token_at_cursor, line_at_cursor | |
10 | from IPython.utils.traitlets import Instance, Type, Any |
|
10 | from IPython.utils.traitlets import Instance, Type, Any, List | |
11 | from IPython.utils.decorators import undoc |
|
11 | from IPython.utils.decorators import undoc | |
12 |
|
12 | |||
13 | from ..comm import CommManager |
|
13 | from ..comm import CommManager | |
@@ -70,6 +70,37 b' class IPythonKernel(KernelBase):' | |||||
70 | comm_msg_types = [ 'comm_open', 'comm_msg', 'comm_close' ] |
|
70 | comm_msg_types = [ 'comm_open', 'comm_msg', 'comm_close' ] | |
71 | for msg_type in comm_msg_types: |
|
71 | for msg_type in comm_msg_types: | |
72 | self.shell_handlers[msg_type] = getattr(self.comm_manager, msg_type) |
|
72 | self.shell_handlers[msg_type] = getattr(self.comm_manager, msg_type) | |
|
73 | ||||
|
74 | help_links = List([ | |||
|
75 | { | |||
|
76 | 'text': "Python", | |||
|
77 | 'url': "http://docs.python.org/%i.%i" % sys.version_info[:2], | |||
|
78 | }, | |||
|
79 | { | |||
|
80 | 'text': "IPython", | |||
|
81 | 'url': "http://ipython.org/documentation.html", | |||
|
82 | }, | |||
|
83 | { | |||
|
84 | 'text': "NumPy", | |||
|
85 | 'url': "http://docs.scipy.org/doc/numpy/reference/", | |||
|
86 | }, | |||
|
87 | { | |||
|
88 | 'text': "SciPy", | |||
|
89 | 'url': "http://docs.scipy.org/doc/scipy/reference/", | |||
|
90 | }, | |||
|
91 | { | |||
|
92 | 'text': "Matplotlib", | |||
|
93 | 'url': "http://matplotlib.org/contents.html", | |||
|
94 | }, | |||
|
95 | { | |||
|
96 | 'text': "SymPy", | |||
|
97 | 'url': "http://docs.sympy.org/latest/index.html", | |||
|
98 | }, | |||
|
99 | { | |||
|
100 | 'text': "pandas", | |||
|
101 | 'url': "http://pandas.pydata.org/pandas-docs/stable/", | |||
|
102 | }, | |||
|
103 | ]) | |||
73 |
|
104 | |||
74 | # Kernel info fields |
|
105 | # Kernel info fields | |
75 | implementation = 'ipython' |
|
106 | implementation = 'ipython' |
@@ -63,6 +63,9 b' class Kernel(SingletonConfigurable):' | |||||
63 | # This should be overridden by wrapper kernels that implement any real |
|
63 | # This should be overridden by wrapper kernels that implement any real | |
64 | # language. |
|
64 | # language. | |
65 | language_info = {} |
|
65 | language_info = {} | |
|
66 | ||||
|
67 | # any links that should go in the help menu | |||
|
68 | help_links = List() | |||
66 |
|
69 | |||
67 | # Private interface |
|
70 | # Private interface | |
68 |
|
71 | |||
@@ -457,6 +460,7 b' class Kernel(SingletonConfigurable):' | |||||
457 | 'implementation_version': self.implementation_version, |
|
460 | 'implementation_version': self.implementation_version, | |
458 | 'language_info': self.language_info, |
|
461 | 'language_info': self.language_info, | |
459 | 'banner': self.banner, |
|
462 | 'banner': self.banner, | |
|
463 | 'help_links': self.help_links, | |||
460 | } |
|
464 | } | |
461 |
|
465 | |||
462 | def kernel_info_request(self, stream, ident, parent): |
|
466 | def kernel_info_request(self, stream, ident, parent): |
General Comments 0
You need to be logged in to leave comments.
Login now