##// END OF EJS Templates
use \0 instead of 'wake up' to finish output...
use \0 instead of 'wake up' to finish output since we are now seeing the captured output, we don't need `wake up` at the end of all of our test outputs.

File last commit:

r20236:a234d15b
r20318:d5648dc2
Show More
menubar.js
414 lines | 14.4 KiB | application/javascript | JavascriptLexer
MinRK
support pdf export in the notebook UI
r16266 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
Brian Granger
Implemented menu based UI using Wijmo.
r5857
Jonathan Frederic
Almost done!...
r17198 define([
Jonathan Frederic
MWE,...
r17200 'jquery',
Min RK
update frontend with path/name changes...
r18752 'base/js/namespace',
'base/js/dialog',
Jonathan Frederic
Almost done!...
r17198 'base/js/utils',
'notebook/js/tour',
MinRK
add bootstrap shim for require...
r17312 'bootstrap',
Matthias BUSSONNIER
use momentjs for nice dates
r17474 'moment',
Min RK
update frontend with path/name changes...
r18752 ], function($, IPython, dialog, utils, tour, bootstrap, moment) {
Matthias BUSSONNIER
"use strict" in most (if not all) our javascript...
r12103 "use strict";
MinRK
save before download-as...
r13076
jon
In person review with @ellisonbg
r17210 var MenuBar = function (selector, options) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Constructor
*
* A MenuBar Class to generate the menubar of IPython notebook
*
* Parameters:
* selector: string
* options: dictionary
* Dictionary of keyword arguments.
* notebook: Notebook instance
* contents: ContentManager instance
* events: $(Events) instance
* save_widget: SaveWidget instance
* quick_help: QuickHelp instance
* base_url : string
* notebook_path : string
* notebook_name : string
*/
MinRK
review pass on multidir js
r13103 options = options || {};
Jonathan Frederic
Almost done!...
r17198 this.base_url = options.base_url || utils.get_body_data("baseUrl");
Brian Granger
Implemented menu based UI using Wijmo.
r5857 this.selector = selector;
jon
In person review with @ellisonbg
r17210 this.notebook = options.notebook;
Jeff Hemmelgarn
Move contentmanager to contents
r18643 this.contents = options.contents;
jon
In person review with @ellisonbg
r17210 this.events = options.events;
this.save_widget = options.save_widget;
this.quick_help = options.quick_help;
Jonathan Frederic
Almost done!...
r17198
try {
jon
In person review with @ellisonbg
r17210 this.tour = new tour.Tour(this.notebook, this.events);
Jonathan Frederic
Almost done!...
r17198 } catch (e) {
this.tour = undefined;
console.log("Failed to instantiate Notebook Tour", e);
}
Brian Granger
Implemented menu based UI using Wijmo.
r5857 if (this.selector !== undefined) {
this.element = $(selector);
this.style();
this.bind_events();
}
};
Matthias BUSSONNIER
add TODO
r17439 // TODO: This has definitively nothing to do with style ...
Brian Granger
Implemented menu based UI using Wijmo.
r5857 MenuBar.prototype.style = function () {
Jonathan Frederic
MWE,...
r17200 var that = this;
MinRK
bootstrap menubar
r10888 this.element.find("li").click(function (event, ui) {
Brian Granger
Fixing minor typo in menubar.js.
r5908 // The selected cell loses focus when the menu is entered, so we
Brian Granger
Cell splitting and merging is done!
r5898 // re-select it upon selection.
Jonathan Frederic
MWE,...
r17200 var i = that.notebook.get_selected_index();
that.notebook.select(i);
Brian Granger
Cell splitting and merging is done!
r5898 }
MinRK
bootstrap menubar
r10888 );
Brian Granger
Implemented menu based UI using Wijmo.
r5857 };
Thomas Kluyver
Add menu entries for getting converted views of a notebook
r13829 MenuBar.prototype._nbconvert = function (format, download) {
download = download || false;
Jonathan Frederic
Almost done!...
r17198 var notebook_path = this.notebook.notebook_path;
MinRK
various unicode fixes...
r15234 var url = utils.url_join_encode(
MinRK
s/base_project_url/base_url/...
r15238 this.base_url,
Thomas Kluyver
Add menu entries for getting converted views of a notebook
r13829 'nbconvert',
format,
Thomas Kluyver
Remove trailing comma
r18859 notebook_path
Thomas Kluyver
Add menu entries for getting converted views of a notebook
r13829 ) + "?download=" + download.toString();
Thomas Kluyver
Fix asyncy nbconvert to download
r18969
Min RK
move Python-specific help links to kernel_info...
r19732 var w = window.open();
Thomas Kluyver
Fix asyncy nbconvert to download
r18969 if (this.notebook.dirty) {
this.notebook.save_notebook().then(function() {
w.location = url;
});
} else {
w.location = url;
}
MinRK
various unicode fixes...
r15234 };
Brian Granger
Implemented menu based UI using Wijmo.
r5857
Jonathan Frederic
Kill the layout manager
r19179 MenuBar.prototype._size_header = function() {
/**
* Update header spacer size.
*/
this.events.trigger('resize-header.Page');
};
Brian Granger
Implemented menu based UI using Wijmo.
r5857 MenuBar.prototype.bind_events = function () {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* File
*/
Matthias BUSSONNIER
fix baseUrl
r9699 var that = this;
Mathieu
put current kernel at the top
r19844
Zachary Sailer
fixing path redirects, cleaning path logic
r12992 this.element.find('#open_notebook').click(function () {
Thomas Kluyver
Some fixes for the tree view
r18783 var parent = utils.url_path_split(that.notebook.notebook_path)[0];
window.open(utils.url_join_encode(that.base_url, 'tree', parent));
Zachary Sailer
fixing path redirects, cleaning path logic
r12992 });
this.element.find('#copy_notebook').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.copy_notebook();
Zachary Sailer
fixing path redirects, cleaning path logic
r12992 return false;
});
this.element.find('#download_ipynb').click(function () {
Jonathan Frederic
Almost done!...
r17198 var base_url = that.notebook.base_url;
var notebook_path = that.notebook.notebook_path;
if (that.notebook.dirty) {
that.notebook.save_notebook({async : false});
MinRK
save before download-as...
r13076 }
Thomas Kluyver
Just use notebook_path in download URLs...
r18856 var url = utils.url_join_encode(base_url, 'files', notebook_path);
Min RK
use ?download=1 to trigger download in /files/...
r18556 window.open(url + '?download=1');
Zachary Sailer
fixing path redirects, cleaning path logic
r12992 });
MinRK
disable download-as-pt...
r13108
Thomas Kluyver
Add menu entries for getting converted views of a notebook
r13829 this.element.find('#print_preview').click(function () {
that._nbconvert('html', false);
});
this.element.find('#download_html').click(function () {
that._nbconvert('html', true);
Zachary Sailer
fixing path redirects, cleaning path logic
r12992 });
Thomas Kluyver
Add option to download as reST
r13831
this.element.find('#download_rst').click(function () {
that._nbconvert('rst', true);
});
MinRK
support pdf export in the notebook UI
r16266 this.element.find('#download_pdf').click(function () {
that._nbconvert('pdf', true);
});
Min RK
remove nbconvert_exporter handling from frontend...
r19277 this.element.find('#download_script').click(function () {
that._nbconvert('script', true);
});
Brian Granger
Improved notebook renaming....
r5859 this.element.find('#rename_notebook').click(function () {
Jonathan Frederic
Fix some dialog keyboard_manager problems
r17213 that.save_widget.rename_notebook({notebook: that.notebook});
Brian Granger
Improved notebook renaming....
r5859 });
Matthias Bussonnier
Prevent jump when clicking on action in menu....
r19908
MinRK
expose notebook checkpoints in html/js...
r10501 this.element.find('#save_checkpoint').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.save_checkpoint();
MinRK
expose notebook checkpoints in html/js...
r10501 });
Matthias Bussonnier
Prevent jump when clicking on action in menu....
r19908
MinRK
add Revert to the menu bar
r10503 this.element.find('#restore_checkpoint').click(function () {
});
Matthias Bussonnier
Prevent jump when clicking on action in menu....
r19908
MinRK
Add Trust Notebook to File menu
r15655 this.element.find('#trust_notebook').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.trust_notebook();
MinRK
Add Trust Notebook to File menu
r15655 });
Jonathan Frederic
Almost done!...
r17198 this.events.on('trust_changed.Notebook', function (event, trusted) {
MinRK
disable trust notebook menu item on trusted notebooks
r15657 if (trusted) {
that.element.find('#trust_notebook')
Min RK
disable trust-notebook click event...
r19917 .addClass("disabled").off('click')
MinRK
disable trust notebook menu item on trusted notebooks
r15657 .find("a").text("Trusted Notebook");
} else {
that.element.find('#trust_notebook')
Min RK
disable trust-notebook click event...
r19917 .removeClass("disabled").on('click', function () {
that.notebook.trust_notebook();
})
MinRK
disable trust notebook menu item on trusted notebooks
r15657 .find("a").text("Trust Notebook");
}
});
Matthias Bussonnier
Prevent jump when clicking on action in menu....
r19908
Matthias BUSSONNIER
add 'Close and halt' in notebook filemenu
r6850 this.element.find('#kill_and_exit').click(function () {
MinRK
avoid race condition when deleting/starting sessions...
r17649 var close_window = function () {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* allow closing of new tabs in Chromium, impossible in FF
*/
Paul Ivanov
make close-and-halt work on new tabs in Chrome...
r13338 window.open('', '_self', '');
window.close();
MinRK
avoid race condition when deleting/starting sessions...
r17649 };
// finish with close on success or failure
that.notebook.session.delete(close_window, close_window);
Matthias BUSSONNIER
add 'Close and halt' in notebook filemenu
r6850 });
Matthias Bussonnier
Prevent jump when clicking on action in menu....
r19908
Brian Granger
Implemented menu based UI using Wijmo.
r5857 // Edit
Brian Granger
Added cell level cut/copy/paste.
r5879 this.element.find('#cut_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.cut_cell();
Brian Granger
Added cell level cut/copy/paste.
r5879 });
this.element.find('#copy_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.copy_cell();
Brian Granger
Added cell level cut/copy/paste.
r5879 });
Brian Granger
Implemented menu based UI using Wijmo.
r5857 this.element.find('#delete_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.delete_cell();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
MinRK
add menu item for undo delete cell...
r9551 this.element.find('#undelete_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.undelete_cell();
MinRK
add menu item for undo delete cell...
r9551 });
Brian Granger
Basic code cell splitting implemented.
r5896 this.element.find('#split_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.split_cell();
Brian Granger
Basic code cell splitting implemented.
r5896 });
this.element.find('#merge_cell_above').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.merge_cell_above();
Brian Granger
Basic code cell splitting implemented.
r5896 });
this.element.find('#merge_cell_below').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.merge_cell_below();
Brian Granger
Basic code cell splitting implemented.
r5896 });
Brian Granger
Implemented menu based UI using Wijmo.
r5857 this.element.find('#move_cell_up').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.move_cell_up();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
this.element.find('#move_cell_down').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.move_cell_down();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
MinRK
add Edit Notebook Metadata to Edit menu
r12913 this.element.find('#edit_nb_metadata').click(function () {
Jonathan Frederic
More review changes
r17214 that.notebook.edit_metadata({
notebook: that.notebook,
keyboard_manager: that.notebook.keyboard_manager});
MinRK
add Edit Notebook Metadata to Edit menu
r12913 });
Brian Granger
Further work on the toolbar UI....
r5994 // View
this.element.find('#toggle_header').click(function () {
Min RK
hide header-bar when header is hidden...
r19902 $('#header-container').toggle();
$('.header-bar').toggle();
Jonathan Frederic
Kill the layout manager
r19179 that._size_header();
Brian Granger
Further work on the toolbar UI....
r5994 });
this.element.find('#toggle_toolbar').click(function () {
MinRK
tweak header styling...
r10906 $('div#maintoolbar').toggle();
Jonathan Frederic
Kill the layout manager
r19179 that._size_header();
Brian Granger
Further work on the toolbar UI....
r5994 });
Brian Granger
Implemented menu based UI using Wijmo.
r5857 // Insert
this.element.find('#insert_cell_above').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.insert_cell_above('code');
that.notebook.select_prev();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
this.element.find('#insert_cell_below').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.insert_cell_below('code');
that.notebook.select_next();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
// Cell
this.element.find('#run_cell').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_cell();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
Brian E. Granger
Renaming execute methods.
r14085 this.element.find('#run_cell_select_below').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_cell_and_select_below();
Brian E. Granger
Renaming execute methods.
r14085 });
this.element.find('#run_cell_insert_below').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_cell_and_insert_below();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
this.element.find('#run_all_cells').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_all_cells();
Paul Ivanov
javascript is no place to start adding title tags
r13159 });
Paul Ivanov
fine-grained notebook 'run' controls, closes #2521...
r8606 this.element.find('#run_all_cells_above').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_cells_above();
Paul Ivanov
javascript is no place to start adding title tags
r13159 });
Paul Ivanov
fine-grained notebook 'run' controls, closes #2521...
r8606 this.element.find('#run_all_cells_below').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.execute_cells_below();
Paul Ivanov
javascript is no place to start adding title tags
r13159 });
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 this.element.find('#to_code').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.to_code();
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 });
this.element.find('#to_markdown').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.to_markdown();
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 });
this.element.find('#to_raw').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.to_raw();
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 });
Brian E. Granger
Simplified Cell menu items related to output.
r14871
this.element.find('#toggle_current_output').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.toggle_output();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
Brian E. Granger
Simplified Cell menu items related to output.
r14871 this.element.find('#toggle_current_output_scroll').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.toggle_output_scroll();
Brian Granger
A first go at RST cell support in the notebook.
r6017 });
Brian E. Granger
Cleaning up output management in code and menus.
r14867 this.element.find('#clear_current_output').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.clear_output();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
Brian E. Granger
Simplified Cell menu items related to output.
r14871
this.element.find('#toggle_all_output').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.toggle_all_output();
MinRK
third attempt at scrolled long output...
r7362 });
Brian E. Granger
Simplified Cell menu items related to output.
r14871 this.element.find('#toggle_all_output_scroll').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.toggle_all_output_scroll();
MinRK
third attempt at scrolled long output...
r7362 });
Brian Granger
Implemented menu based UI using Wijmo.
r5857 this.element.find('#clear_all_output').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.clear_all_output();
Brian Granger
Implemented menu based UI using Wijmo.
r5857 });
Brian E. Granger
Simplified Cell menu items related to output.
r14871
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 // Kernel
this.element.find('#int_kernel').click(function () {
Jessica B. Hamrick
Fix session references in toolbar and menubar
r18204 that.notebook.kernel.interrupt();
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 });
this.element.find('#restart_kernel').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.restart_kernel();
Brian E. Granger
Adding back Kernel menu and Cell Type submenu.
r14869 });
Min RK
add Reconnect to kernel menu
r18731 this.element.find('#reconnect_kernel').click(function () {
that.notebook.kernel.reconnect();
});
Brian Granger
Cleaning up menu code....
r5858 // Help
Jonathan Frederic
Almost done!...
r17198 if (this.tour) {
MinRK
allow notebook tour instantiation to fail...
r16672 this.element.find('#notebook_tour').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.tour.start();
MinRK
allow notebook tour instantiation to fail...
r16672 });
} else {
this.element.find('#notebook_tour').addClass("disabled");
}
Brian Granger
Cleaning up menu code....
r5858 this.element.find('#keyboard_shortcuts').click(function () {
Jonathan Frederic
Almost done!...
r17198 that.quick_help.show_keyboard_shortcuts();
Brian Granger
Cleaning up menu code....
r5858 });
MinRK
add Revert to the menu bar
r10503
this.update_restore_checkpoint(null);
Jonathan Frederic
Almost done!...
r17198 this.events.on('checkpoints_listed.Notebook', function (event, data) {
that.update_restore_checkpoint(that.notebook.checkpoints);
MinRK
add Revert to the menu bar
r10503 });
Jonathan Frederic
Almost done!...
r17198 this.events.on('checkpoint_created.Notebook', function (event, data) {
that.update_restore_checkpoint(that.notebook.checkpoints);
MinRK
add Revert to the menu bar
r10503 });
Thomas Kluyver
'Download as' script
r18967
this.events.on('notebook_loaded.Notebook', function() {
var langinfo = that.notebook.metadata.language_info || {};
that.update_nbconvert_script(langinfo);
});
this.events.on('kernel_ready.Kernel', function(event, data) {
var langinfo = data.kernel.info_reply.language_info || {};
that.update_nbconvert_script(langinfo);
Min RK
move Python-specific help links to kernel_info...
r19732 that.add_kernel_help_links(data.kernel.info_reply.help_links || []);
Thomas Kluyver
'Download as' script
r18967 });
Brian Granger
Implemented menu based UI using Wijmo.
r5857 };
MinRK
restore checkpoints in a sub-list...
r10520 MenuBar.prototype.update_restore_checkpoint = function(checkpoints) {
MinRK
add 'No Checkpoints' to Revert menu...
r11117 var ul = this.element.find("#restore_checkpoint").find("ul");
ul.empty();
MinRK
review pass on multidir js
r13103 if (!checkpoints || checkpoints.length === 0) {
MinRK
add 'No Checkpoints' to Revert menu...
r11117 ul.append(
$("<li/>")
.addClass("disabled")
.append(
$("<a/>")
.text("No checkpoints")
)
);
return;
MinRK
review pass on multidir js
r13103 }
MinRK
remove debug statement...
r11164
Jonathan Frederic
Almost done!...
r17198 var that = this;
MinRK
minor checkpoint cleanup...
r12050 checkpoints.map(function (checkpoint) {
MinRK
restore checkpoints in a sub-list...
r10520 var d = new Date(checkpoint.last_modified);
MinRK
add 'No Checkpoints' to Revert menu...
r11117 ul.append(
$("<li/>").append(
$("<a/>")
.attr("href", "#")
Matthias BUSSONNIER
use momentjs for nice dates
r17474 .text(moment(d).format("LLLL"))
MinRK
add 'No Checkpoints' to Revert menu...
r11117 .click(function () {
Jonathan Frederic
Almost done!...
r17198 that.notebook.restore_checkpoint_dialog(checkpoint);
MinRK
add 'No Checkpoints' to Revert menu...
r11117 })
)
);
MinRK
minor checkpoint cleanup...
r12050 });
MinRK
restore checkpoints in a sub-list...
r10520 };
Thomas Kluyver
'Download as' script
r18967
MenuBar.prototype.update_nbconvert_script = function(langinfo) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Set the 'Download as foo' menu option for the relevant language.
*/
Thomas Kluyver
'Download as' script
r18967 var el = this.element.find('#download_script');
// Set menu entry text to e.g. "Python (.py)"
Min RK
move Python-specific help links to kernel_info...
r19732 var langname = (langinfo.name || 'Script');
langname = langname.charAt(0).toUpperCase()+langname.substr(1); // Capitalise
Thomas Kluyver
Add the . into file_extension
r19027 el.find('a').text(langname + ' ('+(langinfo.file_extension || 'txt')+')');
Thomas Kluyver
'Download as' script
r18967 };
Brian Granger
Implemented menu based UI using Wijmo.
r5857
Min RK
move Python-specific help links to kernel_info...
r19732 MenuBar.prototype.add_kernel_help_links = function(help_links) {
/** add links from kernel_info to the help menu */
var divider = $("#kernel-help-links");
if (divider.length === 0) {
// insert kernel help section above about link
var about = $("#notebook_about").parent();
divider = $("<li>")
.attr('id', "kernel-help-links")
.addClass('divider');
about.prev().before(divider);
}
// remove previous entries
while (!divider.next().hasClass('divider')) {
divider.next().remove();
}
if (help_links.length === 0) {
// no help links, remove the divider
divider.remove();
return;
}
var cursor = divider;
help_links.map(function (link) {
cursor.after($("<li>")
.append($("<a>")
.attr('target', '_blank')
.attr('title', 'Opens in a new window')
.attr('href', link.url)
.append($("<i>")
.addClass("fa fa-external-link menu-icon pull-right")
)
Min RK
fix help-links on Firefox...
r20236 .append($("<span>")
.text(link.text)
)
Min RK
move Python-specific help links to kernel_info...
r19732 )
);
cursor = cursor.next();
});
};
Jonathan Frederic
Almost done!...
r17198 // Backwards compatability.
Brian Granger
Implemented menu based UI using Wijmo.
r5857 IPython.MenuBar = MenuBar;
Jonathan Frederic
Return dicts instead of classes,...
r17201 return {'MenuBar': MenuBar};
Jonathan Frederic
Almost done!...
r17198 });