menubar.js
264 lines
| 9.9 KiB
| application/javascript
|
JavascriptLexer
Brian Granger
|
r5857 | //---------------------------------------------------------------------------- | ||
// Copyright (C) 2008-2011 The IPython Development Team | ||||
// | ||||
// Distributed under the terms of the BSD License. The full license is in | ||||
// the file COPYING, distributed as part of this software. | ||||
//---------------------------------------------------------------------------- | ||||
//============================================================================ | ||||
// MenuBar | ||||
//============================================================================ | ||||
Bussonnier Matthias
|
r9501 | /** | ||
* @module IPython | ||||
* @namespace IPython | ||||
* @submodule MenuBar | ||||
*/ | ||||
Brian Granger
|
r5857 | var IPython = (function (IPython) { | ||
Bussonnier Matthias
|
r9501 | /** | ||
* A MenuBar Class to generate the menubar of IPython noteboko | ||||
* @Class MenuBar | ||||
* | ||||
* @constructor | ||||
* | ||||
* | ||||
* @param selector {string} selector for the menubar element in DOM | ||||
* @param {object} [options] | ||||
* @param [options.baseProjectUrl] {String} String to use for the | ||||
* Base Project url, default would be to inspect | ||||
* $('body').data('baseProjectUrl'); | ||||
* does not support change for now is set through this option | ||||
*/ | ||||
var MenuBar = function (selector, options) { | ||||
var options = options || {}; | ||||
if(options.baseProjectUrl!= undefined){ | ||||
this._baseProjectUrl = options.baseProjectUrl; | ||||
} | ||||
Brian Granger
|
r5857 | this.selector = selector; | ||
if (this.selector !== undefined) { | ||||
this.element = $(selector); | ||||
this.style(); | ||||
this.bind_events(); | ||||
} | ||||
}; | ||||
Bussonnier Matthias
|
r9500 | MenuBar.prototype.baseProjectUrl = function(){ | ||
Bussonnier Matthias
|
r9501 | return this._baseProjectUrl || $('body').data('baseProjectUrl'); | ||
Bussonnier Matthias
|
r9503 | }; | ||
Bussonnier Matthias
|
r9500 | |||
Brian Granger
|
r5857 | |||
MenuBar.prototype.style = function () { | ||||
Brian Granger
|
r6193 | this.element.addClass('border-box-sizing'); | ||
Brian Granger
|
r5898 | $('ul#menus').menubar({ | ||
select : function (event, ui) { | ||||
Brian Granger
|
r5908 | // The selected cell loses focus when the menu is entered, so we | ||
Brian Granger
|
r5898 | // re-select it upon selection. | ||
Brian Granger
|
r5945 | var i = IPython.notebook.get_selected_index(); | ||
Brian Granger
|
r5898 | IPython.notebook.select(i); | ||
} | ||||
}); | ||||
MinRK
|
r10520 | this.element.find("#restore_checkpoint").find("ul").find("li").hide(); | ||
Brian Granger
|
r5857 | }; | ||
MenuBar.prototype.bind_events = function () { | ||||
// File | ||||
Matthias BUSSONNIER
|
r9699 | var that = this; | ||
Brian Granger
|
r5857 | this.element.find('#new_notebook').click(function () { | ||
Matthias BUSSONNIER
|
r9699 | window.open(that.baseProjectUrl()+'new'); | ||
Brian Granger
|
r5857 | }); | ||
this.element.find('#open_notebook').click(function () { | ||||
Matthias BUSSONNIER
|
r9699 | window.open(that.baseProjectUrl()); | ||
Brian Granger
|
r5857 | }); | ||
Brian Granger
|
r5859 | this.element.find('#rename_notebook').click(function () { | ||
IPython.save_widget.rename_notebook(); | ||||
}); | ||||
Brian Granger
|
r5860 | this.element.find('#copy_notebook').click(function () { | ||
Brian Granger
|
r6047 | var notebook_id = IPython.notebook.get_notebook_id(); | ||
Matthias BUSSONNIER
|
r9699 | var url = that.baseProjectUrl() + notebook_id + '/copy'; | ||
Matthias BUSSONNIER
|
r7838 | window.open(url,'_blank'); | ||
return false; | ||||
Brian Granger
|
r5860 | }); | ||
MinRK
|
r10501 | this.element.find('#save_checkpoint').click(function () { | ||
IPython.notebook.save_checkpoint(); | ||||
}); | ||||
MinRK
|
r10503 | this.element.find('#restore_checkpoint').click(function () { | ||
}); | ||||
Brian Granger
|
r5857 | this.element.find('#download_ipynb').click(function () { | ||
Brian Granger
|
r6047 | var notebook_id = IPython.notebook.get_notebook_id(); | ||
Matthias BUSSONNIER
|
r9699 | var url = that.baseProjectUrl() + 'notebooks/' + | ||
Brian Granger
|
r5857 | notebook_id + '?format=json'; | ||
Yoav Ram
|
r8870 | window.location.assign(url); | ||
Brian Granger
|
r5857 | }); | ||
this.element.find('#download_py').click(function () { | ||||
Brian Granger
|
r6047 | var notebook_id = IPython.notebook.get_notebook_id(); | ||
Matthias BUSSONNIER
|
r9699 | var url = that.baseProjectUrl() + 'notebooks/' + | ||
Brian Granger
|
r5857 | notebook_id + '?format=py'; | ||
Yoav Ram
|
r8870 | window.location.assign(url); | ||
Brian Granger
|
r5857 | }); | ||
Matthias BUSSONNIER
|
r6850 | this.element.find('#kill_and_exit').click(function () { | ||
IPython.notebook.kernel.kill(); | ||||
setTimeout(function(){window.close();}, 200); | ||||
}); | ||||
Brian Granger
|
r5857 | // Edit | ||
Brian Granger
|
r5879 | this.element.find('#cut_cell').click(function () { | ||
IPython.notebook.cut_cell(); | ||||
}); | ||||
this.element.find('#copy_cell').click(function () { | ||||
IPython.notebook.copy_cell(); | ||||
}); | ||||
Brian Granger
|
r5857 | this.element.find('#delete_cell').click(function () { | ||
IPython.notebook.delete_cell(); | ||||
}); | ||||
MinRK
|
r9551 | this.element.find('#undelete_cell').click(function () { | ||
IPython.notebook.undelete(); | ||||
}); | ||||
Brian Granger
|
r5896 | this.element.find('#split_cell').click(function () { | ||
IPython.notebook.split_cell(); | ||||
}); | ||||
this.element.find('#merge_cell_above').click(function () { | ||||
IPython.notebook.merge_cell_above(); | ||||
}); | ||||
this.element.find('#merge_cell_below').click(function () { | ||||
IPython.notebook.merge_cell_below(); | ||||
}); | ||||
Brian Granger
|
r5857 | this.element.find('#move_cell_up').click(function () { | ||
IPython.notebook.move_cell_up(); | ||||
}); | ||||
this.element.find('#move_cell_down').click(function () { | ||||
IPython.notebook.move_cell_down(); | ||||
}); | ||||
Brian Granger
|
r5858 | this.element.find('#select_previous').click(function () { | ||
IPython.notebook.select_prev(); | ||||
}); | ||||
this.element.find('#select_next').click(function () { | ||||
IPython.notebook.select_next(); | ||||
}); | ||||
Brian Granger
|
r5994 | // View | ||
this.element.find('#toggle_header').click(function () { | ||||
$('div#header').toggle(); | ||||
IPython.layout_manager.do_resize(); | ||||
}); | ||||
this.element.find('#toggle_toolbar').click(function () { | ||||
IPython.toolbar.toggle(); | ||||
}); | ||||
Brian Granger
|
r5857 | // Insert | ||
this.element.find('#insert_cell_above').click(function () { | ||||
Brian Granger
|
r5945 | IPython.notebook.insert_cell_above('code'); | ||
Brian Granger
|
r5857 | }); | ||
this.element.find('#insert_cell_below').click(function () { | ||||
Brian Granger
|
r5945 | IPython.notebook.insert_cell_below('code'); | ||
Brian Granger
|
r5857 | }); | ||
// Cell | ||||
this.element.find('#run_cell').click(function () { | ||||
IPython.notebook.execute_selected_cell(); | ||||
}); | ||||
this.element.find('#run_cell_in_place').click(function () { | ||||
IPython.notebook.execute_selected_cell({terminal:true}); | ||||
}); | ||||
this.element.find('#run_all_cells').click(function () { | ||||
IPython.notebook.execute_all_cells(); | ||||
Paul Ivanov
|
r8607 | }).attr('title', 'Run all cells in the notebook'); | ||
Paul Ivanov
|
r8606 | this.element.find('#run_all_cells_above').click(function () { | ||
IPython.notebook.execute_cells_above(); | ||||
Paul Ivanov
|
r8607 | }).attr('title', 'Run all cells above (but not including) this cell'); | ||
Paul Ivanov
|
r8606 | this.element.find('#run_all_cells_below').click(function () { | ||
IPython.notebook.execute_cells_below(); | ||||
Paul Ivanov
|
r8607 | }).attr('title', 'Run this cell and all cells below it'); | ||
Brian Granger
|
r5857 | this.element.find('#to_code').click(function () { | ||
IPython.notebook.to_code(); | ||||
}); | ||||
this.element.find('#to_markdown').click(function () { | ||||
IPython.notebook.to_markdown(); | ||||
}); | ||||
MinRK
|
r6248 | this.element.find('#to_raw').click(function () { | ||
IPython.notebook.to_raw(); | ||||
Brian Granger
|
r6017 | }); | ||
Brian Granger
|
r6019 | this.element.find('#to_heading1').click(function () { | ||
IPython.notebook.to_heading(undefined, 1); | ||||
}); | ||||
this.element.find('#to_heading2').click(function () { | ||||
IPython.notebook.to_heading(undefined, 2); | ||||
}); | ||||
this.element.find('#to_heading3').click(function () { | ||||
IPython.notebook.to_heading(undefined, 3); | ||||
}); | ||||
this.element.find('#to_heading4').click(function () { | ||||
IPython.notebook.to_heading(undefined, 4); | ||||
}); | ||||
this.element.find('#to_heading5').click(function () { | ||||
IPython.notebook.to_heading(undefined, 5); | ||||
}); | ||||
this.element.find('#to_heading6').click(function () { | ||||
IPython.notebook.to_heading(undefined, 6); | ||||
}); | ||||
Brian Granger
|
r5857 | this.element.find('#toggle_output').click(function () { | ||
IPython.notebook.toggle_output(); | ||||
}); | ||||
MinRK
|
r7362 | this.element.find('#collapse_all_output').click(function () { | ||
IPython.notebook.collapse_all_output(); | ||||
}); | ||||
this.element.find('#scroll_all_output').click(function () { | ||||
IPython.notebook.scroll_all_output(); | ||||
}); | ||||
this.element.find('#expand_all_output').click(function () { | ||||
IPython.notebook.expand_all_output(); | ||||
}); | ||||
Brian Granger
|
r5857 | this.element.find('#clear_all_output').click(function () { | ||
IPython.notebook.clear_all_output(); | ||||
}); | ||||
// Kernel | ||||
this.element.find('#int_kernel').click(function () { | ||||
IPython.notebook.kernel.interrupt(); | ||||
}); | ||||
this.element.find('#restart_kernel').click(function () { | ||||
IPython.notebook.restart_kernel(); | ||||
}); | ||||
Brian Granger
|
r5858 | // Help | ||
this.element.find('#keyboard_shortcuts').click(function () { | ||||
IPython.quick_help.show_keyboard_shortcuts(); | ||||
}); | ||||
MinRK
|
r10503 | |||
this.update_restore_checkpoint(null); | ||||
$([IPython.events]).on('checkpoints_listed.Notebook', function (event, data) { | ||||
that.update_restore_checkpoint(data); | ||||
}); | ||||
$([IPython.events]).on('checkpoint_created.Notebook', function (event, data) { | ||||
MinRK
|
r10520 | that.update_restore_checkpoint([data]); | ||
MinRK
|
r10503 | }); | ||
Brian Granger
|
r5857 | }; | ||
MinRK
|
r10520 | MenuBar.prototype.update_restore_checkpoint = function(checkpoints) { | ||
if (! checkpoints) { | ||||
checkpoints = []; | ||||
MinRK
|
r10503 | }; | ||
MinRK
|
r10520 | this.element.find("#restore_checkpoint").find("ul").find("li").each(function(i) { | ||
var li = $(this); | ||||
var a = li.find("a"); | ||||
a.off("click"); | ||||
if (checkpoints.length <= i) { | ||||
li.hide(); | ||||
return; | ||||
} else { | ||||
li.show(); | ||||
}; | ||||
var checkpoint = checkpoints[i]; | ||||
var d = new Date(checkpoint.last_modified); | ||||
li.find('a').text( | ||||
d.format("mmm dd HH:MM:ss") | ||||
).click(function () { | ||||
IPython.notebook.restore_checkpoint_dialog(checkpoint); | ||||
}); | ||||
}); | ||||
}; | ||||
Brian Granger
|
r5857 | |||
IPython.MenuBar = MenuBar; | ||||
return IPython; | ||||
}(IPython)); | ||||